成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

舉例說明.Net Framework接口各種實現方法

開發 后端
.Net Framework接口主要就是包含一個虛方法的抽象類型。我們可以從中了解到其中的名稱,參數以及返回值類型。不過接口并不包括任何的實現。

.Net Framework可以我們提供一個部署WEB應用程序的平臺。它的出現就是為了幫助開發人員提供良好的編程環境,以助開發人員提高自己的程序開發效率。我們見天將會了解到的是.Net Framework接口的相關操作方法。#t#

接口繼承:類型繼承的是接口中的方法簽名,而非方法實現。

當一個類型繼承了一個接口時,它只是在允諾提供其中的方法實現:如果沒有提供,則該類型將被認為是抽象的,從而不可能被實例化。

.Net Framework接口僅僅是一個包含著一組虛方法的抽象類型,其中每一個方法都有他們的名稱、參數和返回值類型。但接口方法不包括任何實現。

接口也可以定義事件、無參屬性以及含參屬性,因為它們都只不過是映射到方法上的語法縮寫而已。

如果在一個類型內實現接口方法的時候忽略了virtual關鍵字,那么該方法將被認為是一個密封的虛方法,繼承了該實現類型的其他類型將不可以再重寫該方法。

當一個類型“繼承”某個接口時,它不僅要實現該接口定義的所有方法,還要實現該接口從其他接口中“繼承”而來的所有方法。

實現了多個接口的類型允許我們將它的對象看作這些接口中的任何一個。

.Net Framework接口舉例:

1.使用接口改變已裝箱值類型中的字段

  1. struct Point  
  2. {  
  3. public int x,y;  
  4. public void Change(int x,int y)   
  5. {  
  6. this.x=x; this.y=y;  
  7. }  
  8. public override String ToString()   
  9. {  
  10. return String.Format("({0},{1})",x,y);  
  11. }  
  12. }  
  13. class Program  
  14. {  
  15. static void Main(string[] args)  
  16. {  
  17. Point p=new Point();  
  18. pp.x=p.y=1;  
  19. p.Change(2,2);  
  20. Console.Write(p); //實現System.
    Iformattable接口,調用ToString方法  
  21. Object o=p; //o指向裝箱后的Point對象,顯示(2,2)  
  22. Console.Write(o);  
  23. ((Point) o).Change(3,3);   
  24. Console.Write(o); //拆箱,將已裝箱Point
    中的字段拷貝到線程堆棧上的一個臨時 Point中,
    這個臨時Point上的字段值改為3,但已裝箱的Point
    對象不受這種改變的影響,顯示(2,2)   
  25. }  

問題出現了,C#不允許我們改變已裝箱值類型中的字段,下面利用.Net Framework接口做一個修訂:

  1. interface IChangeBoxedPoint  
  2. {  
  3. void Change(Int32 x, Int32 y);  
  4. }  
  5. struct Point : IChangeBoxedPoint  
  6. {  
  7. public Int32 x, y;  
  8. public void Change(Int32 x, Int32 y)  
  9. {  
  10. this.x = x; this.y = y;  
  11. }  
  12. /**//*.*/  
  13. }  
  14. class App  
  15. {  
  16. static void Main()  
  17. {  
  18. Point p=new Point();  
  19. object o=new object();  
  20. /**//*.*/  
  21. ((IChangeBoxedPoint)p).Change(4, 4); 
  22. //p裝箱,改變已裝箱對象,但當Change返回后,
    已裝箱對象立即被垃圾回收  
  23. Console.WriteLine(p); //(2,2)  
  24. ((IChangeBoxedPoint)o).Change(5, 5); 
  25. //這里沒有裝箱的必要,于是改變已裝箱對象Point的值  
  26. Console.WriteLine(o); //(5,5) 
    C#中沒有接口方法做不到這一點  
  27. }  

2.顯示.Net Framework接口成員的實現

  1. public interface IComparable  
  2. {  
  3. Int32 CompareTo(object other);  
  4. }  
  5. struct SomeValueType:IComparable  
  6. {  
  7. private Int32 x;  
  8. public SomeValueType(Int32 x) { this.x = x; }  
  9. public Int32 CompareTo(SomeValueType other)  
  10. {  
  11. return (x - other.x);  
  12. }  
  13. Int32 IComparable.CompareTo(object other)  
  14. {  
  15. return CompareTo((SomeValueType)other);  
  16. }  
  17. }  
  18. public static void Main()  
  19. {  
  20. SomeValueType v1 = new SomeValueType(1);  
  21. SomeValueType v2 = new SomeValueType(2);  
  22. Int32 n;  
  23. nv1.CompareTo(v2); //不進行任何裝箱  
  24. n = ((IComparable)v1).CompareTo(v2); 
  25. //v2強制裝箱  

注意三點:

a.CompareTo方法的名字前加了接口限定名IComparable.CompareTo,它告訴CLR只有在使用一個IComparable對象引用時方法才被調用

b.IComparable.CompareTo的實現是將other轉型為SomeValueType后,通過調用CompareTo方法來完成的

c.IComparable.CompareTo方法前沒有public或protected訪問修飾符

顯示.Net Framework接口方法的好處:類型安全,減少裝箱操作。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-20 10:19:16

VB.NET動態接口

2013-11-26 11:08:23

Linux命令diff

2009-09-25 09:30:33

Hibernate持久

2018-11-28 08:20:15

Linuxalias命令

2010-06-22 13:08:42

Linux At命令

2010-01-21 09:53:23

C++操作符

2010-03-03 10:55:39

2010-03-04 13:21:32

linux壓縮命令

2010-01-12 15:56:25

C++軟件

2010-01-18 17:31:54

C++編寫程序

2010-06-18 10:24:51

Linux acces

2009-12-07 17:28:55

WCF數據

2010-01-08 17:06:52

C++代碼

2010-03-04 13:45:37

Linux壓縮命令

2010-04-09 16:52:36

Unix操作系統

2010-01-06 10:35:02

Json_Decode

2010-09-24 17:39:28

SQL中EXISTS

2010-01-06 18:33:56

.Net Framew

2009-12-15 15:13:07

.NET Framew

2009-12-18 14:55:26

.Net FrameW
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www性色 | 四虎网站在线观看 | 国产精品久久久99 | 亚洲国产成人在线观看 | 精品国产免费人成在线观看 | 成年免费在线观看 | 国产免费福利在线 | 久久99精品久久久久久琪琪 | 自拍偷拍亚洲视频 | 久久综合一区二区三区 | 久久综合888 | 一区二区三区在线电影 | 欧美成人h版在线观看 | 精品国产视频 | 毛片在线免费 | 欧美日韩中文国产一区发布 | 少妇精品久久久久久久久久 | 欧美激情久久久 | 999久久久久久久久6666 | 欧美a在线观看 | 国产精品久久久久久婷婷天堂 | 国产h视频| 精品久久久久一区二区国产 | www.亚洲一区二区三区 | 我想看国产一级毛片 | 欧美日韩精品中文字幕 | 91观看| 日韩欧美在线视频 | 亚洲一区二区在线 | 久久人人爽人人爽 | 精品欧美一区二区在线观看视频 | 欧美日韩国产一区二区三区 | 亚洲在线| 久久国产亚洲 | 日韩三级在线观看 | 超碰成人在线观看 | 美女131mm久久爽爽免费 | 日本中文字幕一区 | 网站国产| 在线观看免费av网站 | 国产一级毛片精品完整视频版 |