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

學(xué)習(xí)C#接口編程——顯式實(shí)現(xiàn)C#接口成員

開(kāi)發(fā) 后端
接口(interface)用來(lái)定義一種程序的協(xié)定。實(shí)現(xiàn)接口的類或者結(jié)構(gòu)要與接口的定義嚴(yán)格一致。本文我們來(lái)了解顯式實(shí)現(xiàn)C#接口成員的主要方法。

為了實(shí)現(xiàn)C#接口,類可以定義顯式接口成員執(zhí)行體(Explicit interface member

implementations)。顯式C#接口成員執(zhí)行體可以是一個(gè)方法、一個(gè)屬性、一個(gè)事件或者是一個(gè)索引指示器的定義,定義與該成員對(duì)應(yīng)的全權(quán)名應(yīng)保持一致。

顯式實(shí)現(xiàn)C#接口成員圖1

上面的代碼中ICloneable.Clone 和IComparable.CompareTo 就是顯式接口成員執(zhí)行體。

說(shuō)明:

· 不能在方法調(diào)用、屬性訪問(wèn)以及索引指示器訪問(wèn)中通過(guò)全權(quán)名訪問(wèn)顯式接口成員執(zhí)行體。事實(shí)上,顯式接口成員執(zhí)行體只能通過(guò)接口的實(shí)例,僅僅引用接口的成員名稱來(lái)訪問(wèn)。

· 顯式C#接口成員執(zhí)行體不能使用任何訪問(wèn)限制符,也不能加上abstract, virtual, override或static 修飾符。

· 顯式C#接口成員執(zhí)行體和其他成員有著不同的訪問(wèn)方式。因?yàn)椴荒茉诜椒ㄕ{(diào)用、屬性訪問(wèn)以及索引指示器訪問(wèn)中通過(guò)全權(quán)名訪問(wèn),顯式接口成員執(zhí)行體在某種意義上是私有的。但它們又可以通過(guò)接口的實(shí)例訪問(wèn),也具有一定的公有性質(zhì)。

· 只有類在定義時(shí),把接口名寫在了基類列表中,而且類中定義的全權(quán)名、類型和返回類型都與顯式接口成員執(zhí)行體完全一致時(shí),顯式接口成員執(zhí)行體才是有效的,例如:

顯式實(shí)現(xiàn)C#接口成員圖2

 

使用顯式C#接口成員執(zhí)行體通常有兩個(gè)目的:

· 因?yàn)轱@式接口成員執(zhí)行體不能通過(guò)類的實(shí)例進(jìn)行訪問(wèn),這就可以從公有接口中把接口的實(shí)現(xiàn)部分單獨(dú)分離開(kāi)。如果一個(gè)類只在內(nèi)部使用該接口,而類的使用者不會(huì)直接使用到該接口,這種顯式接口成員執(zhí)行體就可以起到作用。

· 顯式接口成員執(zhí)行體避免了接口成員之間因?yàn)橥l(fā)生混淆。如果一個(gè)類希望對(duì)名稱和返回類型相同的接口成員采用不同的實(shí)現(xiàn)方式,這就必須要使用到顯式接口成員執(zhí)行體。如果沒(méi)有顯式接口成員執(zhí)行體,那么對(duì)于名稱和返回類型不同的接口成員,類也無(wú)法進(jìn)行實(shí)現(xiàn)。

下面的定義是無(wú)效的,因?yàn)镾hape 定義時(shí)基類列表中沒(méi)有出現(xiàn)接口IComparable。

顯式實(shí)現(xiàn)C#接口成員圖3

 

在Ellipse中定義ICloneable.Clone是錯(cuò)誤的,因?yàn)镋llipse即使隱式地實(shí)現(xiàn)了接口ICloneable,ICloneable仍然沒(méi)有顯式地出現(xiàn)在Ellipse定義的基類列表中。

接口成員的全權(quán)名必須對(duì)應(yīng)在接口中定義的成員。如下面的例子中,Paint的顯式接口成員執(zhí)行體必須寫成IControl.Paint。

顯式實(shí)現(xiàn)C#接口成員圖4

 

實(shí)現(xiàn)接口的類可以顯式實(shí)現(xiàn)該接口的成員。當(dāng)顯式實(shí)現(xiàn)某成員時(shí),不能通過(guò)類實(shí)例訪問(wèn)該成員,而只能通過(guò)該接口的實(shí)例訪問(wèn)該成員。顯式接口實(shí)現(xiàn)還允許程序員繼承共享相同成員名的兩個(gè)接口,并為每個(gè)接口成員提供一個(gè)單獨(dú)的實(shí)現(xiàn)。

下面例子中同時(shí)以公制單位和英制單位顯示框的尺寸。Box類繼承IEnglishDimensions和IMetricDimensions兩個(gè)接口,它們表示不同的度量衡系統(tǒng)。兩個(gè)接口有相同的成員名 Length 和 Width。

顯式實(shí)現(xiàn)C#接口成員圖5

 

輸出:Length(in): 30,Width (in): 20,Length(cm): 76.2,Width (cm): 50.8

代碼討論:如果希望默認(rèn)度量采用英制單位,請(qǐng)正常實(shí)現(xiàn) Length 和 Width 這兩個(gè)方法,并從 IMetricDimensions 接口顯式實(shí)現(xiàn) Length 和 Width 方法:

顯式實(shí)現(xiàn)C#接口成員圖6

 

這種情況下,可以從類實(shí)例訪問(wèn)英制單位,而從接口實(shí)例訪問(wèn)公制單位:

顯式實(shí)現(xiàn)C#接口成員圖7

至此,顯式實(shí)現(xiàn)C#接口成員的主要方法就介紹完了。

【編輯推薦】

  1. C#3.5新特性的介紹
  2. C#中DirectSound錄音的使用
  3. C#擴(kuò)展方法性能測(cè)試對(duì)比
  4. C#多標(biāo)簽瀏覽器功能的擴(kuò)展
  5. C#標(biāo)簽的制作:多標(biāo)簽的實(shí)現(xiàn)
責(zé)任編輯:book05 來(lái)源: 新浪博客
相關(guān)推薦

2009-08-24 09:55:26

C#接口轉(zhuǎn)換

2009-08-24 11:02:52

C#接口映射

2009-08-27 14:29:28

顯式實(shí)現(xiàn)接口

2009-08-31 17:02:28

C#接口編程

2009-08-24 10:47:45

C#接口重實(shí)現(xiàn)

2009-08-03 18:26:18

C#定義接口成員

2009-08-25 10:57:09

C#接口

2009-08-25 10:44:08

C#接口定義接口

2009-08-24 10:31:37

C#接口繼承

2009-09-02 14:26:50

C#對(duì)接口成員訪問(wèn)

2009-08-25 17:55:52

C#實(shí)現(xiàn)Strateg

2009-08-31 15:55:17

C#實(shí)現(xiàn)Strateg

2009-08-31 18:17:32

C#接口編程

2009-08-20 18:06:18

學(xué)習(xí)C#接口

2009-08-31 16:23:13

C#接口

2009-08-31 16:48:02

C#實(shí)現(xiàn)IDispos

2009-09-04 13:22:31

C#實(shí)現(xiàn)多個(gè)接口

2009-09-01 18:29:24

C#實(shí)現(xiàn)多個(gè)接口

2009-08-12 15:55:12

C#接口定義

2009-08-31 18:01:41

C#接口事件
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 一区二区三区在线 | 欧 | 国产免费又色又爽又黄在线观看 | 精品久久久久久久久久久久久久 | 天天躁日日躁狠狠躁2018小说 | 国产一区二区自拍 | aaaaaa大片免费看最大的 | 日日想夜夜操 | 亚洲一区 中文字幕 | 亚洲精品国产区 | 亚洲情侣视频 | 一区二区免费高清视频 | 亚洲视频一区二区三区 | 视频一区二区在线观看 | 亚洲h色| 久久亚洲美女 | 国产成人精品一区二区三区网站观看 | 国产亚洲欧美日韩精品一区二区三区 | 超级碰在线 | 精品三级在线观看 | 成人字幕网zmw| www.国产一区 | 欧美高清一区 | 一级片免费视频 | 久久99国产精一区二区三区 | 中文字幕精品一区 | 国产精品一区二区三区久久 | 久久国产一区二区 | 你懂的av| 欧美日韩视频一区二区 | 日韩在线免费播放 | 天天综合网天天综合 | 日本中文字幕一区 | 一区二区三区四区日韩 | 91久久爽久久爽爽久久片 | 99精品一区二区 | 亚洲国产精品99久久久久久久久 | 伊人免费在线观看高清 | 欧美亚洲视频 | 国产精品一区视频 | www.国产一区 | 亚洲一区二区欧美 |