Utility classes, which are collections of ``++static++`` members, are not meant to be instantiated.


C# adds an implicit public constructor to every class which does not explicitly define at least one constructor. Hence, at least one ``++protected++`` constructor should be defined if you wish to subclass this utility class. Or the ``++static++`` keyword should be added to the class declaration to prevent subclassing.

== Noncompliant Code Example

----
public class StringUtils // Noncompliant
{ 
  public static string Concatenate(string s1, string s2) 
  {
    return s1 + s2;
  }
}
----

== Compliant Solution

----
public static class StringUtils
{ 
  public static string Concatenate(string s1, string s2) 
  {
    return s1 + s2;
  }
}
----

or


----
public class StringUtils
{ 
  protected StringUtils()
  {
  }
  public static string Concatenate(string s1, string s2) 
  {
    return s1 + s2;
  }
}
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
