ReSharper 2024.1 Help

Code inspection: Class is never instantiated (non-private accessibility)

This inspection reports public classes and records, for which no objects were created in the solution. Unlike the 'Type is never used' problem, a type reported by this inspection has usages: it may be used as a base type, as a method or type parameter, in an uninitialized variable declaration, and so on.

There are a few possible solutions based on different situations: If the class only contains static members and/or constant fields, consider making it static. If the class is a base class or is used for type parameters, consider making it abstract. If the class is not required and does not affect your existing code, you may consider removing it. However, if the class should be instantiated but is not, consider creating instances where necessary.

In all cases, your intention behind the class should be clear to anyone reading your code in the future. The action you choose should add up to the readability and maintainability of your code.

For the solution-wide inspection to work, you need to enable at least one of the following:

  • Simplified global usage checking: select Show unused non-private type members when solution-wide analysis is off on the Code Inspection | Settings page of ReSharper options Alt+R, O.

  • Solution-wide analysis: select Enable solution-wide analysis on the Code Inspection | Settings page of ReSharper options Alt+R, O.

Note that even if the reported symbol has no direct usages in your solution, there could be cases where it is used indirectly — for example, via reflection — or it could just be designed as public API. In all those cases, you would want to suppress the usage-checking inspection for the symbol in one of the following ways:

Last modified: 24 May 2024