CA1053: スタティック ホルダー型にはコンストラクターを含めません
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
分類 |
Microsoft.Design |
互換性に影響する変更点 |
あり |
原因
パブリック型または入れ子になったパブリック型で、静的なメンバーのみが宣言されています。また、パブリックまたはプロテクトの既定のコンストラクターが含まれます。
規則の説明
静的メンバーの呼び出しに型のインスタンスは必要ないため、コンストラクターは不要です。また、この型に静的でないメンバーはないため、インスタンスを作成しても型のメンバーにアクセスできません。
違反の修正方法
この規則違反を修正するには、既定のコンストラクターを削除するか、コンストラクターをプライベートにします。
[!メモ]
コンパイラによっては、型にコンストラクターが定義されていないと、自動的にパブリックの既定コンストラクターが作成されます。この場合、違反を防ぐために、プライベートの既定コンストラクターを追加します。
警告を抑制する状況
この規則による警告は抑制しないでください。コンストラクターが存在することで、静的な型ではないことがわかります。
使用例
この規則に違反する型を次の例に示します。ソース コードには既定のコンストラクターがないことに注意してください。このコードをアセンブリにコンパイルすると、C# コンパイラによって既定のコンストラクターが挿入されます。その結果、この規則に違反します。違反を修正するには、プライベート コンストラクターを宣言します。
using System;
namespace DesignLibrary
{
public class NoInstancesNeeded
{
// Violates rule: StaticHolderTypesShouldNotHaveConstructors.
// Uncomment the following line to correct the violation.
// private NoInstancesNeeded() {}
public static void Method1() {}
public static void Method2() {}
}
}