我无法在任何地方找到“字段”列为C#关键字。有谁知道这个背景?
答案 0 :(得分:12)
这是必要的,例如,如果您将事件标记为不可序列化。它指定属性适用的目标。
它是属性目标语法的一部分。来自specification:
attribute-target:
field
event
method
param
property
return
type
另请参阅NonSerializedAttribute
的文档:
要将
NonSerializedAttribute
类应用于事件,请将属性位置设置为字段,如以下C#代码所示。
[field:NonSerializedAttribute()]
public event ChangedEventHandler Changed;
答案 1 :(得分:6)
C#编译器通常可以搞清楚该属性适用于哪个声明部分。我可以想到你可以使用它的三种情况:
答案 2 :(得分:5)
这是为了允许您在字段上设置NonSerialized属性,这在序列化事件时很有用。
例如,这会给你一个编译错误
[NonSerialized]
public event SomeEventHandler SomeEvent;
要解决此问题,您必须使用field:
[field:NonSerialized]
public event SomeEventHandler SomeEvent;
此处有更多相关内容 - Delegates and Serialization
答案 3 :(得分:0)
NonSerializedAttribute仅适用于字段,您可以按如下方式使用它:
[NonSerialized]
public string myString;