次の方法で共有


静的なメンバのみの型にはコンストラクタを含めないでください

更新 : 2007 年 11 月

TypeName

StaticHolderTypesShouldNotHaveConstructors

CheckId

CA1053

カテゴリ

Microsoft.Design

互換性に影響する変更点

あり

原因

パブリック型または入れ子になったパブリック型で、静的なメンバのみが宣言されています。また、パブリックまたはプロテクトの既定のコンストラクタが含まれます。

規則の説明

静的メンバの呼び出しに型のインスタンスは必要ないため、コンストラクタは不要です。また、この型に静的でないメンバはないため、インスタンスを作成しても型のメンバにアクセスできません。

違反の修正方法

この規則違反を修正するには、既定のコンストラクタを削除するか、コンストラクタをプライベートにします。

ms182169.alert_note(ja-jp,VS.90).gifメモ :

コンパイラによっては、型にコンストラクタが定義されていないと、自動的にパブリックの既定コンストラクタが作成されます。この場合、違反を防ぐために、プライベートの既定コンストラクタを追加します。

警告を抑制する状況

この規則による警告は抑制しないでください。コンストラクタが存在することで、静的な型ではないことがわかります。

使用例

この規則に違反する型を次の例に示します。ソース コードには既定のコンストラクタがないことに注意してください。このコードをアセンブリにコンパイルすると、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() {}
   }
}