举例说明.NetFramework接口各种实现方法

.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. n= v1.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接口方法的好处:类型安全,减少装箱操作。

网站标题:举例说明.NetFramework接口各种实现方法
URL分享:http://www.shufengxianlan.com/qtweb/news13/104613.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联