[英]Why do I need “field:” in my attribute declaration “[field:NonSerialized]”?
我在任何地方都找不到列為 C# 關鍵字的“字段”。 有誰知道這件事的背景?
這是必要的,例如,如果您將事件標記為不可序列化。 它指定屬性適用的目標。
它是屬性目標語法的一部分。 從規范:
attribute-target:
field
event
method
param
property
return
type
另請參閱NonSerializedAttribute
的文檔:
要將
NonSerializedAttribute
類應用於事件,請將屬性位置設置為 field,如以下 C# 代碼所示。
[field:NonSerializedAttribute()]
public event ChangedEventHandler Changed;
C# 編譯器通常可以輕松確定屬性適用於聲明的哪個部分。 我可以想到您可能會使用它的三種情況:
這是為了允許您在字段上設置 NonSerialized 屬性,這在序列化事件中很有用。
例如,這會給你一個編譯錯誤
[NonSerialized]
public event SomeEventHandler SomeEvent;
要解決此問題,您必須使用field:
[field:NonSerialized]
public event SomeEventHandler SomeEvent;
更多關於這里 -委托和序列化
NonSerializedAttribute 僅適用於字段,您可以按如下方式使用它:
[NonSerialized]
public string myString;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.