== Why is this an issue?

Calling https://learn.microsoft.com/en-us/dotnet/api/system.object.tostring[ToString()] on an object should always return a `string`. Thus, https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-override-the-tostring-method[overriding the ToString method] should never return `null`, as it breaks the method's implicit contract, and as a result the consumer's expectations.

[source,csharp,diff-id=1,diff-type=noncompliant]
----
public override string ToString ()
{
  if (this.collection.Count == 0) 
  {
    return null; // Noncompliant
  } 
  else 
  {
    // ...
  }
}
----

A better alternative is to use the https://learn.microsoft.com/en-us/dotnet/api/system.string.empty[String.Empty] built-in field.

[source,csharp,diff-id=1,diff-type=compliant]
----
public override string ToString () 
{
  if (this.collection.Count == 0) 
  {
    return string.Empty;
  } 
  else 
  {
    // ...
  }
}
----

include::../resources-dotnet.adoc[]
* https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-override-the-tostring-method[How to override the ToString method]

include::../rspecator.adoc[]
