首页 > 其他 > 详细

泛型接口委托

时间:2019-10-28 23:36:07      阅读:145      评论:0      收藏:0      [点我收藏+]

接口

接口是一组抽象成员的集合。

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();

 

        }

}
View Code

委托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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!