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.减少强制类型转换,将检查类型

  • 相关阅读:
    Python基础编程常用模块汇总
    博客目录
    网络编程
    python 对象
    python模块和规范开发
    python常用内置函数
    python递归函数和匿名函数
    python装饰器
    python迭代器,生成器,推导式
    python作用域
  • 原文地址:https://www.cnblogs.com/xiaoxinstart/p/12862738.html
Copyright © 2011-2022 走看看