中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#顯式實現接口原理是什么

發布時間:2021-07-16 10:15:44 來源:億速云 閱讀:133 作者:chen 欄目:編程語言

這篇文章主要介紹“C#顯式實現接口原理是什么”,在日常操作中,相信很多人在C#顯式實現接口原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C#顯式實現接口原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

C#顯式實現接口方法是什么情況呢?當一個類實現了兩個接口(假設Document 類實現了IStorable和ITalk接口),但是兩個接口中有方法名相同時,可以使用下面的語法來顯式地實現一個接口:

void ITalk.Read()

C#顯式實現接口的方法時,不可以加訪問修飾符(access modifier),將隱式地聲明為public。

不能通過類的實例來直接訪問顯式實現的方法。假設該類還實現了IStorable接口中的Read()的方法,當使用下面的語句時:

theDoc.Read( );

將會隱式調用IStorable的Read() 方法。

如果該類僅實現了ITalk接口,而沒有實現IStorable接口,也就不存在方法名沖突的情況,但是卻仍使用顯示的接口聲明,那么當使用 theDoc.Read() 時,將會出現編譯錯誤。

'ExplicitImplementation.Document   ' does not contain a definition for    'Read' F:\MyApp\Test\ExplictImplament.cs  57  11  Test

當想使用 ITalk接口的方法時,需要進行一次類型轉換,使用下面的語法:

ITalk itDoc = theDoc;   itDoc.Read();

C#顯式實現接口之成員隱藏

假設有如下兩個接口:

interface IBase    {      int P { get; set; }   }    interface IDerived : IBase    {      new int P();    }

繼承 IDerived的類至少需要進行一個顯示實現。

class myClass : IDerived    it55.com   {       int IBase.P { get {...} }       public int P( ) {...}   }    class myClass : IDerived     {       public int P { get {...} }       int IDerived.P( ) {...}    }   class myClass : IDerived    {      int IBase.P { get {...} }       int IDerived.P( ) {...}    }

C#顯式實現接口之實現接口的值類型(Struct)

如果使用值類型實現接口,則應通過值類型的對象訪問接口方法,而不要轉換成接口,再用接口進行訪問,此時會多出一個“復制”了的引用對象,而原來的值對象依然存在,兩個對象是各自獨立的。

myStruct theStruct = new myStruct( );    theStruct.Status = 2;    IStorable isTemp = ( IStorable ) theStruct;    it55.com   Console.WriteLine( "isTemp: {0}", isTemp.Status );    isTemp.Status = 4;    Console.WriteLine("theStruct:{0},    isTemp: {1}",theStruct.Status, isTemp.Status );    theStruct.Status = 6;    Console.WriteLine( "theStruct: {0},    isTemp: {1}",theStruct.Status, isTemp.Status );

C#顯式實現接口之程序輸出:

isTemp: 2   theStruct: 2, isTemp: 4   theStruct: 6, isTemp: 4

到此,關于“C#顯式實現接口原理是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

禹城市| 桑植县| 苗栗市| 射阳县| 南部县| 饶阳县| 瑞昌市| 西林县| 资源县| 普定县| 淄博市| 四平市| 大埔县| 英吉沙县| 方城县| 奎屯市| 平阳县| 绥江县| 三都| 观塘区| 林口县| 安义县| 五莲县| 柘城县| 绥芬河市| 梁河县| 巴青县| 中江县| 威信县| 嘉鱼县| 平阳县| 临夏市| 佛冈县| 方山县| 新兴县| 黄大仙区| 雅安市| 四子王旗| 宕昌县| 土默特右旗| 班玛县|