博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.扩展方法2.接口的隐式实现和显式实现
阅读量:6000 次
发布时间:2019-06-20

本文共 1050 字,大约阅读时间需要 3 分钟。

1.扩展方法:必须写在一个静态类里面,具体见代码:

namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            Student s = new Student();            s.HelloWorld("HelloWorld!");        }    }        public class Student     {        void GetName()        {            Console.WriteLine("Tom");            Console.ReadKey();        }    }    public static class StudentEx    {        public static void HelloWorld(this Student self,string str)        {            Console.WriteLine(str);            Console.ReadKey();        }    }}

 在这个例子中,扩展方法写在了StudentEx中,因为HelloWorld这个函数的第一个参数是“this Student self”,即对应的类型是Student,所以在Main函数中才可以对Student实例化后调用HelloWorld方法。如果把HelloWorld的第一个参数类型改为“this Object self”,由于object是所有类的父类,所以所有类的方法都可以使用这个方法。

注:为什么可以这样做,主要是来源于静态方法和非静态方法的区别,非静态方法在编译的时候,编译器会给它加一个参数作为第一个参数,这个参数就是this,这也正是我们在函数体内可以使用this的原因,而静态方法并不会加上this,所以它没办法通过实例化后的对象来调用。扩展方法正是给静态方法加了一个this的参数,使得它可以通过实例化访问。

2.接口的隐式实现和显示实现的区别。

在这篇博文里面说的很清楚,参见

自己总结一下:通过显式实现的好处是,不把具体类暴露给用户,只暴露接口。

转载于:https://www.cnblogs.com/SherryWang/p/3707980.html

你可能感兴趣的文章
typedef,结构体,共用体,联合体
查看>>
Linux中LVM2原理及制作LVM2
查看>>
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方式
查看>>
《什么是数学》读书笔记(一):反证法、数学归纳法与唯一分解定理
查看>>
条款29:为“异常安全”而努力是值得的
查看>>
现代C++新四大名著及C++学习杂谈
查看>>
表格布局tabelLayout
查看>>
JMS学习(一):初识JMS
查看>>
返回查询页面保持原来的查询条件和数据
查看>>
Linux下Power Management开发总结
查看>>
2015 HDU 多校联赛 5363 Key Set
查看>>
Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?
查看>>
dropwizard metrics - 基本使用介绍
查看>>
Swift的基础,操作符,字符串和集合类型
查看>>
Android 仿QQ界面的实现
查看>>
让你变懒的 Android Studio Live Templates
查看>>
Android中关闭DatePicker、TimePicker、NumberPicker的可编辑模式
查看>>
一个钓鱼WiFi的破解
查看>>
oc84--单利
查看>>
RGB 常用颜色对照表
查看>>