溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中有哪些內(nèi)置特性

發(fā)布時(shí)間:2021-07-07 16:01:17 來源:億速云 閱讀:195 作者:Leah 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)C#中有哪些內(nèi)置特性,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

C#內(nèi)置特性之System.ObsoleteAttribute 特性

我們通過這個(gè)例子來看一下特性是如何解決上面的問題:我們可以給舊的SendMsg()方法上面加上Obsolete特性來告訴編譯器這個(gè)方法已經(jīng)過時(shí),然后當(dāng)編譯器發(fā)現(xiàn)當(dāng)程序中有地方在使用這個(gè)用Obsolete標(biāo)記過的方法時(shí),就會(huì)給出一個(gè)警告信息。

namespace Attribute {       public class Message {}            public class TestClass {         // 添加Obsolete特性         [Obsolete("請(qǐng)使用新的SendMsg(Message msg)重載方法")]         public static void ShowMsg() {             Console.WriteLine("這是舊的SendMsg()方法");         }          public static void ShowMsg(Message msg) {             Console.WriteLine("新SendMsg()方法");         }       }       class Program {         static void Main(string[] args) {             TestClass.ShowMsg();             TestClass.ShowMsg(new Message());                   }      }  }

現(xiàn)在運(yùn)行這段代碼,我們會(huì)發(fā)現(xiàn)編譯器給出了一個(gè)警告:警告CS0618: “Attribute.TestClass.ShowMsg()”已過時(shí):“請(qǐng)使用新的SendMsg(Message msg)重載方法”。通過使用特性,我們可以看到編譯器給出了警告信息,告訴客戶程序存在一個(gè)新的方法可供使用,這樣,程序員在看到這個(gè)警告信息后,便會(huì)考慮使用新的SendMsg()方法。

NOTE:簡(jiǎn)單起見,TestClass類和 Program位于同一個(gè)程序集中,實(shí)際上它們可以離得很遠(yuǎn)。

C#內(nèi)置特性的使用方法

通過上面的例子,我們已經(jīng)大致看到特性的使用方法:首先是有一對(duì)方括號(hào)“[]”,在左方括號(hào)“[”后緊跟特性的名稱,比如Obsolete,隨后是一個(gè)圓括號(hào)“()”。和普通的類不同,這個(gè)圓括號(hào)不光可以寫入構(gòu)造函數(shù)的參數(shù),還可以給類的屬性賦值,在Obsolete的例子中,僅傳遞了構(gòu)造函數(shù)參數(shù)。

NOTE:實(shí)際上,當(dāng)你用鼠標(biāo)框選住Obsolete,然后按下F12轉(zhuǎn)到定義,會(huì)發(fā)現(xiàn)它的全名是ObsoleteAttribute,繼承自Attribute類。但是這里卻僅用Obsolete來標(biāo)記方法,這是.Net的一個(gè)約定,所有的特性應(yīng)該均以Attribute來結(jié)尾,在為對(duì)象標(biāo)記特性時(shí)如果沒有添加Attribute,編譯器會(huì)自動(dòng)尋找?guī)в蠥ttribute的版本。

NOTE:使用構(gòu)造函數(shù)參數(shù),參數(shù)的順序必須同構(gòu)造函數(shù)聲明時(shí)的順序相同,所有在特性中也叫位置參數(shù)(Positional Parameters),與此相應(yīng),屬性參數(shù)也叫做命名參數(shù)(Named Parameters)。

上述就是小編為大家分享的C#中有哪些內(nèi)置特性了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI