新聞中心
.Net Framework可以我們提供一個(gè)部署WEB應(yīng)用程序的平臺(tái)。它的出現(xiàn)就是為了幫助開發(fā)人員提供良好的編程環(huán)境,以助開發(fā)人員提高自己的程序開發(fā)效率。我們見天將會(huì)了解到的是.Net Framework接口的相關(guān)操作方法。#t#

站在用戶的角度思考問題,與客戶深入溝通,找到尋烏網(wǎng)站設(shè)計(jì)與尋烏網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋尋烏地區(qū)。
接口繼承:類型繼承的是接口中的方法簽名,而非方法實(shí)現(xiàn)。
當(dāng)一個(gè)類型繼承了一個(gè)接口時(shí),它只是在允諾提供其中的方法實(shí)現(xiàn):如果沒有提供,則該類型將被認(rèn)為是抽象的,從而不可能被實(shí)例化。
.Net Framework接口僅僅是一個(gè)包含著一組虛方法的抽象類型,其中每一個(gè)方法都有他們的名稱、參數(shù)和返回值類型。但接口方法不包括任何實(shí)現(xiàn)。
接口也可以定義事件、無參屬性以及含參屬性,因?yàn)樗鼈兌贾徊贿^是映射到方法上的語法縮寫而已。
如果在一個(gè)類型內(nèi)實(shí)現(xiàn)接口方法的時(shí)候忽略了virtual關(guān)鍵字,那么該方法將被認(rèn)為是一個(gè)密封的虛方法,繼承了該實(shí)現(xiàn)類型的其他類型將不可以再重寫該方法。
當(dāng)一個(gè)類型“繼承”某個(gè)接口時(shí),它不僅要實(shí)現(xiàn)該接口定義的所有方法,還要實(shí)現(xiàn)該接口從其他接口中“繼承”而來的所有方法。
實(shí)現(xiàn)了多個(gè)接口的類型允許我們將它的對(duì)象看作這些接口中的任何一個(gè)。
.Net Framework接口舉例:
1.使用接口改變已裝箱值類型中的字段
- struct Point
- {
- public int x,y;
- public void Change(int x,int y)
- {
- this.x=x; this.y=y;
- }
- public override String ToString()
- {
- return String.Format("({0},{1})",x,y);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Point p=new Point();
- pp.x=p.y=1;
- p.Change(2,2);
- Console.Write(p); //實(shí)現(xiàn)System.
Iformattable接口,調(diào)用ToString方法- Object o=p; //o指向裝箱后的Point對(duì)象,顯示(2,2)
- Console.Write(o);
- ((Point) o).Change(3,3);
- Console.Write(o); //拆箱,將已裝箱Point
中的字段拷貝到線程堆棧上的一個(gè)臨時(shí) Point中,
這個(gè)臨時(shí)Point上的字段值改為3,但已裝箱的Point
對(duì)象不受這種改變的影響,顯示(2,2)- }
- }
問題出現(xiàn)了,C#不允許我們改變已裝箱值類型中的字段,下面利用.Net Framework接口做一個(gè)修訂:
- interface IChangeBoxedPoint
- {
- void Change(Int32 x, Int32 y);
- }
- struct Point : IChangeBoxedPoint
- {
- public Int32 x, y;
- public void Change(Int32 x, Int32 y)
- {
- this.x = x; this.y = y;
- }
- /**//*.*/
- }
- class App
- {
- static void Main()
- {
- Point p=new Point();
- object o=new object();
- /**//*.*/
- ((IChangeBoxedPoint)p).Change(4, 4);
- //p裝箱,改變已裝箱對(duì)象,但當(dāng)Change返回后,
已裝箱對(duì)象立即被垃圾回收- Console.WriteLine(p); //(2,2)
- ((IChangeBoxedPoint)o).Change(5, 5);
- //這里沒有裝箱的必要,于是改變已裝箱對(duì)象Point的值
- Console.WriteLine(o); //(5,5)
C#中沒有接口方法做不到這一點(diǎn)- }
- }
2.顯示.Net Framework接口成員的實(shí)現(xiàn)
- public interface IComparable
- {
- Int32 CompareTo(object other);
- }
- struct SomeValueType:IComparable
- {
- private Int32 x;
- public SomeValueType(Int32 x) { this.x = x; }
- public Int32 CompareTo(SomeValueType other)
- {
- return (x - other.x);
- }
- Int32 IComparable.CompareTo(object other)
- {
- return CompareTo((SomeValueType)other);
- }
- }
- public static void Main()
- {
- SomeValueType v1 = new SomeValueType(1);
- SomeValueType v2 = new SomeValueType(2);
- Int32 n;
- n= v1.CompareTo(v2); //不進(jìn)行任何裝箱
- n = ((IComparable)v1).CompareTo(v2);
- //v2強(qiáng)制裝箱
- }
注意三點(diǎn):
a.CompareTo方法的名字前加了接口限定名IComparable.CompareTo,它告訴CLR只有在使用一個(gè)IComparable對(duì)象引用時(shí)方法才被調(diào)用
b.IComparable.CompareTo的實(shí)現(xiàn)是將other轉(zhuǎn)型為SomeValueType后,通過調(diào)用CompareTo方法來完成的
c.IComparable.CompareTo方法前沒有public或protected訪問修飾符
顯示.Net Framework接口方法的好處:類型安全,減少裝箱操作。
分享名稱:舉例說明.NetFramework接口各種實(shí)現(xiàn)方法
網(wǎng)址分享:http://m.fisionsoft.com.cn/article/dhppisc.html


咨詢
建站咨詢
