av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

淺談C#接口方法

1.公有方法實現(xiàn)C#接口方法

創(chuàng)新互聯(lián)建站長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為云和企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,云和網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

盡管C#在定義接口時不用指明接口方法的訪問控制方式,但默認(rèn)接口方法均為public型(這可以從反編譯的IL代碼中看到)。下面是使用Reflector查看的接口IL代碼:

 
 
 
  1. class private interface abstract auto ansi IControl{
  2. method public hidebysig newslot abstract virtual instance void Paint() cil managed{
  3. }
  4. }

實現(xiàn)接口的類需要實現(xiàn)所有接口方法。通常情況下,接口的實現(xiàn)方法也為public型。如下案例:

 
 
 
  1. using System ;
  2. interface IControl
  3. {
  4. void Paint();
  5. }
  6. public class EditBox: IControl
  7. {
  8. public void Paint()
  9. {
  10. Console.WriteLine("Pain method is called!");
  11. }
  12. }
  13. class Test
  14. {
  15. static void Main()
  16. {
  17. EditBox editbox = new EditBox();
  18. editbox.Paint();
  19. ((IControl)editbox)。Paint();
  20. }
  21. }

接口就好像是關(guān)系型數(shù)據(jù)庫中的一對多表,一個接口對應(yīng)多個接口方法,每個接口方法又對應(yīng)虛擬方法表(VMT)中的某個公有或私有方法??梢娡ㄟ^接口對方法進(jìn)行調(diào)用需要多出一道轉(zhuǎn)換工作,因此執(zhí)行效率不如直接調(diào)用。

2.私有方法不能實現(xiàn)C#接口方法

如果想將接口方法直接實現(xiàn)為私有方法是辦不到的。下面的EditBox的代碼中Paint方法沒有特殊說明,默認(rèn)為private,導(dǎo)致代碼無法執(zhí)行:

 
 
 
  1. using System ;
  2. interface IControl
  3. {
  4. void Paint();
  5. }
  6. public class EditBox: IControl
  7. {
  8. void Paint()
  9. {
  10. Console.WriteLine("Pain method is called!");
  11. }
  12. public void ShowPaint()
  13. {
  14. this.Paint();
  15. ((IControl)this)。Paint();
  16. }
  17. }
  18. class Test
  19. {
  20. static void Main()
  21. {
  22. EditBox editbox = new EditBox();
  23. editbox.ShowPaint();
  24. }
  25. }

程序在編譯時將顯示如下編譯錯誤:“”EditBox“不會實現(xiàn)接口成員”IControl.Paint()“?!盓ditBox.Paint()“或者是靜態(tài)、非公共的,或者有錯誤的返回類型?!?/p>

由于接口規(guī)范中的方法默認(rèn)的訪問權(quán)限是public,而類中的默認(rèn)訪問權(quán)限是default,也就是說private,因此導(dǎo)致權(quán)限范圍收縮,兩者權(quán)限并不相同,所以必須將類的權(quán)限調(diào)整為public才可以使上面的代碼得以執(zhí)行。

3.實現(xiàn)專門的C#接口方法

 
 
 
  1. using System ;
  2. interface IControl
  3. {
  4. void Paint();
  5. }
  6. public class EditBox: IControl
  7. {
  8. void Paint()
  9. {
  10. Console.WriteLine("Pain method is called!");
  11. }
  12. void IControl.Paint()
  13. {
  14. Console.WriteLine("IControl.Pain method is called!");
  15. }
  16. public void ShowPaint()
  17. {
  18. this.Paint();
  19. ((IControl)this)。Paint();
  20. }
  21. }
  22. class Test
  23. {
  24. static void Main()
  25. {
  26. EditBox editbox = new EditBox();
  27. editbox.ShowPaint();
  28. //editbox.Paint();
  29. ((IControl)editbox)。Paint();
  30. }
  31. }

當(dāng)前標(biāo)題:淺談C#接口方法
轉(zhuǎn)載來于:http://uogjgqi.cn/article/dpjpogo.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流