web-dev-qa-db-ja.com

クラスの特定のフィールドのC#で警告CS0649を無効化/抑制します

リフレクションを使用して初期化するC#クラスにいくつかのフィールドがあります。コンパイラーは、それらに対してCS0649警告を表示します。

フィールドfoo' is never assigned to, and will always have its default valuenull '(CS0649)(アセンブリ-CSharp)

これらの特定のフィールドについてのみ警告を無効にし、他のクラスやこのクラスの他のフィールドについては警告を表示したままにします。プロジェクト全体でCS0649を無効にすることは可能ですが、もっときめ細かいものはありますか?

38
iseeall

#pragma warning 特定の警告を無効にしてから再度有効にするには:

public class MyClass
{
    #pragma warning disable 0649

    // field declarations for which to disable warning
    private object foo;

    #pragma warning restore 0649

    // rest of class
}

詳細な回答については、 「使用されない」および「割り当てられない」警告をC#で抑制する を参照してください。

65
Douglas
//disable warning here
#pragma warning disable 0649

 //foo field declaration

//restore warning to previous state after
#pragma warning restore 0649
7

フィールド初期化子を使用することで警告を抑制することもできます。これにより、コードが非常に少なくなります。

public class MyClass
{
    // field declarations for which to disable warning
    private object foo = null;

    // rest of class
}
6
BMac
public class YouClass
{
#pragma warning disable 649
    string foo;
#pragma warning restore 649
}
3
Hamlet Hakobyan