zoukankan      html  css  js  c++  java
  • 泛型接口委托

    接口

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

    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泛型。

    public interface IBaseService<T>:IDisposable where T:BaseEntity
    
    如上一个基类业务 对传入的T类进行操作,并限制T
    例如传入User 则对User实体操作,传入Manager,则对Manager实体操作.
    理解为参数化操作的类型,适应更多的类型,让同一份代码重用.
    泛型接口

    委托

    本质上讲 委托是一个类型安全的对象(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 参考这篇文章

    委托还可以多路广播,一个委托对象可以维护一个调用方法的列表。使用+=操作符。按照方法列表的顺序执行方法。-=用来移除方法。

    委托协变

     通过委托实现继承的感觉,类似于里氏替换原则。

  • 相关阅读:
    java冒泡算法
    java时间操作
    Java重写构造方法
    正则Sub用法
    Python正则反向引用
    Django发送邮件
    Django导出excel
    Nginx编译安装
    年薪20万Python工程师进阶(7):Python资源大全,让你相见恨晚的Python库
    Go语言学习笔记
  • 原文地址:https://www.cnblogs.com/cdjbolg/p/11755784.html
Copyright © 2011-2022 走看看