zoukankan      html  css  js  c++  java
  • c# 对于委托,事件,泛型的理解

    1.委托

    我对委托的理解是一个公共资源,可以把委托比作外卖小哥,外卖小哥可以帮商家A送货,也可以帮商家B送货,并且这些商家也不需要知道买他们东西的人的住址,这个送货的过程就是交给外卖小哥去做的。这样的话,分工很明确,自然整个过程的效率也提高了。

    委托是一种类型(委托类型),同意需要定义,实例化,之后才能调用,就像我们用class来定义一个类,用new 来实例化一个类一样的。委托用delegate来定义一个委托类型,同意用new来实例化一个委托对象。

    使用委托四步走

    (1)定义委托类型

         public delegate void StringProcessor(string s); 定义了一个委托,且规定了可以使用这个委托的规则,即 仅有一个string类型的参数,返回类型是void的方法

    (2)有一个合乎(1)中规定的方法

        public void SayHello(string msg)
         {
               Console.WriteLine(string.Format("Hello:{0}",msg));
         }

    (3)实例化一个委托对象

     StringProcessor processor = new StringProcessor(SayHello);

    (4)调用委托对象

       processor("Lily");

    2.事件

    事件类似于属性,属性是一组get,set的方法,而事件是一组add,remove的方法。

    3.泛型

    泛型相当于一个模板,假如A类需要实现功能F,B类也需要实现功能F,都是实现功能F,只是类型不一样,要怎样才能只写一个方法来实现呢?

    (1)写一个参数为object的方法,object是A的父类,也是B的父类,利用参数的协变是可以的,但是把object类型的输入参数强制转换成A或者B来使用

    (2)用泛型,传入参数是T类型的,在编译时,编译器会根据使用的情况来推测这个T类型具体时什么类型,不需要强制转换

    好处:1.减少强制类型转换,将检查类型

  • 相关阅读:
    查看当前的数据和索引的总大小
    PXC安装
    [学习笔记]位运算
    PXC小结
    java算法集训代码填空题练习3
    mha配置参数详解
    [学习笔记]二分图
    Java 实现 蓝桥杯 等额本金
    账号权限问题导致 masterha_check_repl 检查失败
    [学习笔记]0/1分数规划
  • 原文地址:https://www.cnblogs.com/xiaoxinstart/p/12862738.html
Copyright © 2011-2022 走看看