Net Framework接口的實現(xiàn)方法有哪些,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
10余年的蘆淞網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整蘆淞建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“蘆淞網(wǎng)站設(shè)計”,“蘆淞網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
.Net Framework可以我們提供一個部署WEB應(yīng)用程序的平臺。它的出現(xiàn)就是為了幫助開發(fā)人員提供良好的編程環(huán)境,以助開發(fā)人員提高自己的程序開發(fā)效率。我們見天將會了解到的是.Net Framework接口的相關(guān)操作方法。
接口繼承:類型繼承的是接口中的方法簽名,而非方法實現(xiàn)。
當(dāng)一個類型繼承了一個接口時,它只是在允諾提供其中的方法實現(xiàn):如果沒有提供,則該類型將被認(rèn)為是抽象的,從而不可能被實例化。
.Net Framework接口僅僅是一個包含著一組虛方法的抽象類型,其中每一個方法都有他們的名稱、參數(shù)和返回值類型。但接口方法不包括任何實現(xiàn)。
接口也可以定義事件、無參屬性以及含參屬性,因為它們都只不過是映射到方法上的語法縮寫而已。
如果在一個類型內(nèi)實現(xiàn)接口方法的時候忽略了virtual關(guān)鍵字,那么該方法將被認(rèn)為是一個密封的虛方法,繼承了該實現(xiàn)類型的其他類型將不可以再重寫該方法。
當(dāng)一個類型“繼承”某個接口時,它不僅要實現(xiàn)該接口定義的所有方法,還要實現(xiàn)該接口從其他接口中“繼承”而來的所有方法。
實現(xiàn)了多個接口的類型允許我們將它的對象看作這些接口中的任何一個。
.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); //實現(xiàn)System.
Iformattable接口,調(diào)用ToString方法Object o=p; //o指向裝箱后的Point對象,顯示(2,2)
Console.Write(o);
((Point) o).Change(3,3);
Console.Write(o); //拆箱,將已裝箱Point
中的字段拷貝到線程堆棧上的一個臨時 Point中,
這個臨時Point上的字段值改為3,但已裝箱的Point
對象不受這種改變的影響,顯示(2,2)}
}
問題出現(xiàn)了,C#不允許我們改變已裝箱值類型中的字段,下面利用.Net Framework接口做一個修訂:
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裝箱,改變已裝箱對象,但當(dāng)Change返回后,
已裝箱對象立即被垃圾回收Console.WriteLine(p); //(2,2)
((IChangeBoxedPoint)o).Change(5, 5);
//這里沒有裝箱的必要,于是改變已裝箱對象Point的值
Console.WriteLine(o); //(5,5)
C#中沒有接口方法做不到這一點}
}
2.顯示.Net Framework接口成員的實現(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強制裝箱 }
注意三點:
a.CompareTo方法的名字前加了接口限定名IComparable.CompareTo,它告訴CLR只有在使用一個IComparable對象引用時方法才被調(diào)用
b.IComparable.CompareTo的實現(xiàn)是將other轉(zhuǎn)型為SomeValueType后,通過調(diào)用CompareTo方法來完成的
c.IComparable.CompareTo方法前沒有public或protected訪問修飾符
顯示.Net Framework接口方法的好處:類型安全,減少裝箱操作。
看完上述內(nèi)容,你們掌握Net Framework接口的實現(xiàn)方法有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!