C#介面

來源:互聯網
上載者:User

標籤:style   blog   http   ar   使用   sp   2014   log   cti   

一、介面引用

介面是表示一組函數成員而不實現成員的參考型別。其他類型——類和結構可以實現介面。

我們不能直接通過類對象的成員提供者。然而,我們可以通過把類對象引用強制轉換為介面類型來擷取指向介面的引用。一旦有了介面的的引用,我們可以使用點號來調用介面的方法。

如下代碼的聲明了介面以及一個實現它的類。Main中的代碼建立了類的對象,並通過類對象調用實現方法。同時建立了介面類型的變數,強制把類對象的引用轉換成介面類型的引用,並通過介面的引用來調用實現的方法。

 

這裡為了更清楚看到變數的值和類型,我給添加了監看式視窗,如下

 

 

 

 

程式運行結果如下:

 

 二、介面查詢(QueryInterface)

一個類可以有多個介面,聲明了介面變數並且指向一個對象的時候,這個變數只能使用該介面內的方法和屬性,而不能訪問其他介面中的方法和屬性。但介面查詢很方便的讓我們在一個類中的不同介面間進行切換。

如下代碼,定義了兩個不同的介面,以及實現了它們的一個類Cat。在Main函數中,通過介面引用調用了IVoice中定義的方法,之後又通過as運算子進行介面的切換,調用了IFavoriteFood中定義的方法。

 

 

同樣這裡,我們添加監看式視窗:

 

程式啟動並執行結果如下:

 

 

三、使用介面引用的好處:

編程靈活,類型不會很大的限制:

 Imap pMap=new Map();

 此時的pMap只能使用IMap介面中定義的方法和屬性,比如擷取圖層的個數,添加圖層等,但是不能清空視圖上的內容(因為這個方法是在IActiveView中定義的)。

但是QI很方便的讓我們在一個類的不同介面間進行切換:

IActiveView pView=pMap as IActiveView。

現在pView就可以使用IActiveView中定義中的方法。

 

 

參考資料:《C# 4.0圖解教程》P285-P287

ArcEngine_10開發手冊(2011版) P20-25

C#介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.