ReSharper 2026.1 Help

コードインスペクション: 派生型を介した型の静的メンバーへのアクセス

このエラーは、型から派生した型を介して型の静的メンバーにアクセスするコードで発生します。 たとえば、次のようになります。

class A { public static int N; } class B : A { } static void Main(string [] args) { B.N = 3; // warning here }

上記のコードは、フィールド N がタイプ B に属しているのに、そうではないという誤った認識を引き起こします。 さらに、型 AB が異なるアセンブリに導入された場合、 Main() メソッドは B のアセンブリに不要な依存関係を導入することになりますが、これは回避できます。

ファクトリメソッドへの呼び出しによって、さらに混乱する状況が発生する可能性があります。 var で変数を定義すると、得られる型は期待通りではないかもしれません。 たとえば

var request = HttpWebRequest.Create("http://someplace.com");

上記のコードは、 Create() 操作の結果が HttpWebRequest 型のオブジェクトであることを示唆していますが、実際にはそうではありません。結果は WebRequest 型であり、次のように記述するのが最適です:

var request = WebRequest.Create("http://someplace.com");

また、C# コンパイラーは宣言型を使用してメソッドの呼び出しを作成するため、IL では実際には基本型の呼び出しになります。 後で new 修飾子と同じシグネチャーを持つメソッドを派生型に追加した場合、再コンパイルしない限りコードの動作は変わりません。

2026 年 6 月 12 日