接口
接口是一组抽象成员的集合。
C# 用interface来定义接口。
接口中不能有字段,也不能有构造函数,接口不能提供实现。
接口可以实现多继承
as关键字判断是否支持一个接口 null
is关键字判断是否实现一个接口 false
接口在以下情况特别有用:
只有一个层次结构,但是只有一部分派生类支持某个公共行为
需要构建的公共行为跨多个层次。(目前没有理解)
接口还没有具体的写过(理解还不深)
例如:接口类ICamera
VirtualCamera 继承ICamera();
ICamera camera=new VirtualCamera();
调用ICamera 中的方法,但实际是调用VirtualCamera的方法。
开辟了一个新的空间指向派生类对象VirtualCamera。
泛型
泛型是个容器。
List<T> name= new List<T>();
装箱 将值类型存放在栈上的 转换成存在堆上的引用类型
拆箱 反过来
与非泛型容器相比,提供更好的性能,不会导致装箱或拆箱的损耗
泛型更类型安全,因为只包含我们指定的类型
泛型有多种 Queue stack 等泛型类型 。还有种可以自动排序的SortedSet泛型。
委托
本质上讲 委托是一个类型安全的对象(Object),它指向程序中另一个以后会被调用的方法。通俗的讲就是传方法。
包含3点
1 它所调用的方法的名称
2 该方法的参数
3 该方法的返回值
关键字为delegate
下面给个委托的简单例子:
public delegate int BinaryOp(int x, int y); public class SimpLeMath { public int Add(int x, int y) { return x + y; } public int Subtract(int x, int y) { return x - y; } } class Program { static void Main(string[] args) { Console.WriteLine("************delegate************"); SimpLeMath a = new SimpLeMath(); BinaryOp b = a.Subtract;//给委托一个方法名 Console.WriteLine("10+10 is {0}", b(10, 10)); Console.ReadLine(); } }
委托BinaryOp b指向方法Subtract 这样b就代替了方法Subtract。
具体的实例 :https://www.cnblogs.com/Alex-bg/archive/2012/05/13/2498043.html 参考这篇文章
委托还可以多路广播,一个委托对象可以维护一个调用方法的列表。使用+=操作符。按照方法列表的顺序执行方法。-=用来移除方法。
委托协变
通过委托实现继承的感觉,类似于里氏替换原则。
原文:https://www.cnblogs.com/cdjbolg/p/11755784.html