成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#內(nèi)置特性介紹

開發(fā) 后端
本文介紹了C#內(nèi)置特性。特性是為程序添加元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù))的一種機(jī)制,通過(guò)它可以給編譯器提供指示或者提供對(duì)數(shù)據(jù)的說(shuō)明。

 .Net 中可以使用特性來(lái)完成這一工作。特性是一個(gè)對(duì)象,它可以加載到程序集及程序集的對(duì)象中,這些對(duì)象包括 程序集本身、模塊、類、接口、結(jié)構(gòu)、構(gòu)造函數(shù)、方法、方法參數(shù)等,加載了特性的對(duì)象稱作特性的目標(biāo)。特性是為程序添加元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù))的一種機(jī)制,通過(guò)它可以給編譯器提供指示或者提供對(duì)數(shù)據(jù)的說(shuō)明。

NOTE:特性的英文名稱叫做Attribute,在有的書中,將它翻譯為“屬性”;另一些書中,將它翻譯為“特性”;由于通常我們將含有g(shù)et和/或set訪問(wèn)器的類成員稱為“屬性”(英文Property),所以本文中我將使用“特性”這個(gè)名詞,以區(qū)分“屬性”(Property)。  

中文版的VS2005使用“屬性”。

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

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

  1. namespace Attribute {  
  2.  
  3.     public class Message {}  
  4.       
  5.     public class TestClass {  
  6.        // 添加Obsolete特性  
  7.        [Obsolete("請(qǐng)使用新的SendMsg(Message msg)重載方法")]  
  8.        public static void ShowMsg() {  
  9.            Console.WriteLine("這是舊的SendMsg()方法");  
  10.        }  
  11.  
  12.        public static void ShowMsg(Message msg) {  
  13.            Console.WriteLine("新SendMsg()方法");  
  14.        }  
  15.  
  16.     }  
  17.  
  18.     class Program {  
  19.        static void Main(string[] args) {  
  20.            TestClass.ShowMsg();  
  21.            TestClass.ShowMsg(new Message());            
  22.        }  
  23.     }  
  24. }  
  25.  

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

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

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

通過(guò)上面的例子,我們已經(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來(lái)標(biāo)記方法,這是.Net的一個(gè)約定,所有的特性應(yīng)該均以Attribute來(lái)結(jié)尾,在為對(duì)象標(biāo)記特性時(shí)如果沒(méi)有添加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)置特性的簡(jiǎn)單介紹。

【編輯推薦】

  1. C#基礎(chǔ)知識(shí)一覽
  2. 學(xué)習(xí)C#自定義用戶控件
  3. C#自定義組件和用戶組件屬性的設(shè)置
  4. C#編程中的組件-事件-委托
  5. Visual C#自定義組件的設(shè)計(jì):Pop3Com組件
責(zé)任編輯:book05 來(lái)源: cnblogs
相關(guān)推薦

2009-08-04 08:58:01

C#自定義特性

2009-08-19 16:51:14

C# 4.0 dyna

2016-10-13 13:33:41

反射特性c#

2009-08-19 16:50:32

Visual C#C#語(yǔ)言特性

2009-08-12 18:35:36

C# ArrayLis

2009-08-24 18:01:45

C#3.0新特性

2009-08-26 17:10:09

C# 3.5新特性

2009-08-26 16:01:37

C#特性

2009-08-25 10:24:29

C# delegate

2009-08-17 16:47:51

C# Anonymou

2009-09-02 17:20:50

C# Parsing

2009-08-10 16:30:56

C# BitmapDa

2009-08-12 09:41:28

C# Director

2009-09-03 15:57:11

C# SystemMe

2009-08-12 15:43:02

操作C# Datase

2009-07-31 14:15:38

C# 構(gòu)造函數(shù)

2009-08-18 16:45:40

C# Raw Sock

2009-08-12 15:34:40

C# DBNull

2010-01-25 18:19:17

C++特性

2010-01-25 18:19:17

C++特性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 大象视频一区二区 | 在线看无码的免费网站 | 中文字幕第一页在线 | 国产成人jvid在线播放 | 久久精品亚洲一区二区三区浴池 | 日韩综合在线 | 狠狠的干狠狠的操 | 欧美精品tv | 男人天堂视频在线观看 | 日本不卡一区二区三区 | 天天看天天操 | 日韩中文字幕久久 | 国产女人叫床高潮大片免费 | 精品国产乱码久久久久久牛牛 | 91成人在线视频 | 偷拍亚洲色图 | 亚洲精品久久久久久久不卡四虎 | 亚洲成人免费在线 | 中文字幕爱爱视频 | 国产在线视频一区二区 | 国产精品亚洲精品 | 麻豆国产精品777777在线 | 丁香六月激情 | 亚洲伊人久久综合 | 日韩视频一区二区 | 久久在线 | 精品国产视频在线观看 | 在线久草 | 仙人掌旅馆在线观看 | 成人在线观看亚洲 | 九九九久久国产免费 | 性色av一区 | 精品一区二区三区在线观看 | 一区二区三区四区免费在线观看 | 亚洲精品99| 男女羞羞的网站 | 在线视频91 | 欧美韩一区二区 | 欧美亚洲一级 | 亚洲一区不卡 | 日韩欧美日韩在线 |