質問

C# キーワードとしてリストされている「フィールド」がどこにも見つかりません。この背景を知っている人はいますか?

役に立ちましたか?

解決

C# コンパイラは通常、属性が宣言のどの部分に適用されるかを問題なく把握できます。これを使用するケースとしては、次の 3 つが考えられます。

  1. アセンブリに適用される属性。AssemblyInfo.cs で非常に目立つ
  2. P/Invoke 宣言の戻り値に適用される属性 [return:MarshalAs]
  3. アクセサーを使用せずに、プロパティまたはイベントのバッキング変数に属性を適用します。あなたの場合。

他のヒント

あなたは非直列化可能としてイベントをマークしている場合は、

これは、例えば、必要です。これは、属性が適用される対象を指定します。

これは、属性ターゲットの構文の一部です。 仕様でます:

attribute-target:
    field
    event
    method
    param
    property
    return
    type
NonSerializedAttribute のも、マニュアルを参照してください>
  

、イベントにNonSerializedAttributeクラスを適用するには、次のC#コードに示すように、フィールドに属性の位置を設定します。

     

[field:NonSerializedAttribute()]

     

public event ChangedEventHandler Changed;

これはあなたがフィールド上NonSerialized属性を設定できるようにするために意図され、このイベントをシリアル化に有用である。

たとえば、これはあなたのコンパイルエラーを与えるだろう。

[NonSerialized]
public event SomeEventHandler SomeEvent;

あなたはfield:を使用する必要があり、この問題を解決するには、

[field:NonSerialized]
public event SomeEventHandler SomeEvent;

ここでは、この上のほかの - 代表とシリアライズする

NonSerializedAttributeは、次のようにあなたがそれを使用することができ、フィールドにのみ適用されます:

[NonSerialized]
public string myString;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top