org.sonar.plugins.csharp.S3453.html Maven / Gradle / Ivy
Why is this an issue?
When a class has only a private
constructor, it can’t be instantiated except within the class itself. Such classes can be considered
dead code and should be fixed
Exceptions
- Classes that access their private constructors (singletons or smart
enums) are ignored.
- Classes with only
static
members are also ignored because they are covered by Rule {rule:csharpsquid:S1118}.
- Classes that derive from SafeHandle since
they can be instantiate through P/Invoke.
How to fix it
Code examples
Noncompliant code example
public class MyClass // Noncompliant: the class contains only private constructors
{
private MyClass() { ... }
}
Compliant solution
public class MyClass // Compliant: the class contains at least one non-private constructor
{
public MyClass() { ... }
}
Resources
Documentation
- {rule:csharpsquid:S1118} - Utility classes should not have public constructors
- Microsoft Learn - SafeHandle Class
- Microsoft Learn - Platform Invoke (P/Invoke)
- Microsoft Learn - Use
enumeration classes instead of enum types
- Wikipedia - Dead code
- Wikipedia - Singleton pattern
Articles & blog posts
- C# in Depth - Implementing the Singleton Pattern in C#
- Medium - Making enums smarter in C#
© 2015 - 2024 Weber Informatics LLC | Privacy Policy