欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
學(xué)習C#:Attribute與Property
    本文介紹了什么是Attribute,Attribute的概念定義,Attribute與Property的區別。

    一.什么是Attribute

    先看下面的三段代碼:

    1.自定義Attribute類(lèi):VersionAttribute

    1. [AttributeUsage(AttributeTargets.Class)]  
    2. public class VersionAttribute : Attribute  
    3. {  
    4.     public string Name { getset; }  
    5.     public string Date { getset; }  
    6.     public string Describtion { getset; }  

    2.使用自定義Attribute的Class:

    1. [Version(Name = "hyddd", Date = "2009-07-20", Describtion = "hyddd's class")]  
    2. public class MyCode  
    3. {  
    4.     //...  

    3.上面這個(gè)Class中的Attribute一般會(huì )被如何使用呢?

    1. class Program  
    2. {  
    3.     static void Main(string[] args)  
    4.     {  
    5.         var info = typeof(MyCode);  
    6.         var classAttribute = (VersionAttribute)Attribute.GetCustomAttribute(info, typeof(VersionAttribute));  
    7.         Console.WriteLine(classAttribute.Name);  
    8.         Console.WriteLine(classAttribute.Date);  
    9.         Console.WriteLine(classAttribute.Describtion);  
    10.     }  

    示例完畢!上面三段代碼相信已經(jīng)說(shuō)明了Attribute大概是一個(gè)什么東西和怎么去用。

    二.深入討論Attribute

    1.Attribute的概念定義

    關(guān)于A(yíng)ttribute概念的定義,我直接引用《你必須知道的.NET之特性和屬性》中的一段來(lái)說(shuō)明:

    MADN的定義為:公共語(yǔ)言運行時(shí)允許添加類(lèi)似關(guān)鍵字的描述聲明,叫做attributes, 它對程序中的元素進(jìn)行標注,如類(lèi)型、字段、方法和屬性等。Attributes和Microsoft .NET Framework文件的元數據(metadata)保存在一起,可以用來(lái)向運行時(shí)描述你的代碼,或者在程序運行的時(shí)候影響應用程序的行為。

    我們簡(jiǎn)單的總結為:定制特性attribute,本質(zhì)上是一個(gè)類(lèi),其為目標元素提供關(guān)聯(lián)附加信息,并在運行期以反射的方式來(lái)獲取附加信息。

    噢,原來(lái)Attribute的目的是為元素提供關(guān)聯(lián)附加信息。其中,上面第一段代碼中“[AttributeUsage(AttributeTargets.Class)] ”說(shuō)明了Attribute提供附加信息的元素是Class,所以如果上面第二段的代碼改為:

    1. public class MyCode  
    2. {  
    3.     [Version(Name = "hyddd", Date = "2009-07-20", Describtion = "hyddd's class")]  
    4.     public void Test() { }  
    5. }  
    6.  

    會(huì )出現編譯錯誤。

    2.Attribute作為編譯指令

    Attribute類(lèi)是在編譯的時(shí)候被實(shí)例化的,而不是像通常的類(lèi)那樣在運行時(shí)候才實(shí)例化。所以在第三段代碼中,你可以在沒(méi)有實(shí)例化MyCode對象的情況下取到MyCode的Attribute信息。由于A(yíng)ttribute類(lèi)是在編譯的時(shí)候被實(shí)例化的,所以你還可以用外部工具維護這些Attribute信息。

    3.Attribute與Property

    從中文來(lái)說(shuō),Attribute和Property的中文都叫“屬性”,很容易讓人混淆?,F在的文章,Attribute一般翻譯為”特性”,而Property稱(chēng)為“屬性”。

    或許你會(huì )問(wèn),我用靜態(tài)的Property/Field一樣可以做到在不實(shí)例化的時(shí)候拿到一些信息,如果這樣的話(huà),Attribute又有什么存在意義呢?

    1.Property:

    Property可以說(shuō)是一個(gè)面向對象的概念,提供了對私有字段的訪(fǎng)問(wèn)封裝,在C#中以get和set訪(fǎng)問(wèn)器方法實(shí)現對可讀可寫(xiě)屬性的操作,提供了安全和靈活的數據訪(fǎng)問(wèn)封裝。比如:

    1. public class Robot  
    2. {  
    3.     private string name = "";   //字段:Field  
    4.     public string Name          //屬性:Property,對Field進(jìn)行封裝。  
    5.       {  
    6.         get { return name; }  
    7.         set { name = value; }  
    8.     }  

    2.Attribute:

    Attribute的目標是:為元素提供附加信息。它的作用更類(lèi)似于注釋。

    可以說(shuō),Property/Field和Attribute是兩個(gè)完全不同的概念,雖然他們有些時(shí)候能做一樣的事,但請記住,他們是從本質(zhì)上就不同的兩個(gè)東西。

    三.實(shí)現自己的Attribute時(shí)需要注意的一些問(wèn)題

    1.自定義的Attribute必須直接或者間接繼承System.Attribute。

    2.這里有一個(gè)約定:所有自定義的特性名稱(chēng)都應該有個(gè)Attribute后綴。因為當你的Attribute施加到一個(gè)程序的元素上的時(shí)候,編譯器先查找你的Attribute的定義,如果沒(méi)有找到,那么它就會(huì )查找“Attribute名稱(chēng)"+Attribute的定義。如果都沒(méi)有找到,那么編譯器就報錯。這就是為什么我可以再上面第一段代碼中,定義一個(gè)VersionAttribute,但在第二段代碼中,我使用卻是Version這個(gè)Attribute。:>

    下面是一些開(kāi)發(fā)自定義Attribute時(shí),可能需要用到的資料:

    【1】Attribute可以關(guān)聯(lián)的元素包括:

    程序集(assembly)、模塊(module)、類(lèi)型(type)、屬性(property)、事件(event)、字段(field)、方法(method)、參數(param)、返回值(return)。例如:

    1. [assembly: Version(Name = "hyddd", Date = "2009-07-20", Describtion = "hyddd's class")]  
    2. public class MyCode  
    3. {  
    4.     //......  

    用指定的前綴來(lái)表示特性所應用的目標元素,建議這樣來(lái)處理,因為顯式處理可以消除可能帶來(lái)的二義性。

    【2】AttributeTargets目標包括:

    AttributeTargets目標包括 

    【3】AttributeUsageAttribute中的3個(gè)屬性(Property)說(shuō)明:

    AttributeUsageAttribute中的3個(gè)屬性(Property)說(shuō)明   

    四.參考資料

    【1】Msdn

    【2】《你必須知道的.NET之特性和屬性》,博主嚴重推薦!

    【3】《Attribute在.net編程中的應用》系列文章

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
有關(guān)C#標簽Attribute的熟悉
用Runtime的手段填充任意NSObject對象的nil屬性
property和attribute的區別
Apache Ant使用指南(轉載)
jQuery函數attr()和prop()的區別
class_addProperty方法中的objc_property_attribute_t參數順序很重要
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久