簡體   English   中英

“屬性”在此屬性上是什么意思?

[英]What does “property” mean on this attribute?

[property: Obsolete]
static int X
{
    get { return 42; }
}

在上面的代碼中,“財產”一詞的目的是什么? 如果我將[屬性:已過時]替換為[已過時],則代碼似乎以相同的方式工作。 而且,盡管“屬性”在Visual Studio中顯示為藍色,但它並未出現在C#關鍵字列表中: https : //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/

屬性規范將其定義為attribute target

某些上下文允許在多個目標上指定屬性。 程序可以通過包含attribute_target_specifier來顯式指定目標。 將屬性放在全局級別時,需要global_attribute_target_specifier。 在所有其他位置,將應用合理的默認值,但是在某些模棱兩可的情況下,可以使用attribute_target_specifier確認或覆蓋默認值(或者在非模棱兩可的情況下,只需確認默認值)。

它還指出,在許多情況下(如您提到的情況),這是允許的,但不是必需的。

在其他情況下,允許包含attribute_target_specifier,但不是必需的。 例如,類聲明可以包含或省略說明符類型。

這是屬性目標規范

在您的代碼中,實際上並不需要使用它,因為在該位置該屬性只有一個允許的目標。 可以將Obsolete屬性放置在類型,方法或屬性上,但是如果放置在屬性上,則僅允許使用property目標說明符(並隱式使用)。

最實際的用途是assembly目標說明符,您可以在其中通過屬性設置組裝配置:

[assembly: AssemblyProduct("Foo bar")]

您可以使用AttributeUsage在自定義屬性上設置允許的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM