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 inherit this utility class. Or the static keyword should be added to the class declaration to prevent inheriting it.
public class StringUtils // Noncompliant: implicit public constructor
{
public static string Concatenate(string s1, string s2)
{
return s1 + s2;
}
}
or
public class StringUtils // Noncompliant: explicit public constructor
{
public StringUtils()
{
}
public static string Concatenate(string s1, string s2)
{
return s1 + s2;
}
}
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;
}
}