c# 对于委托,事件,泛型的理解

2021-03-06 13:29

阅读:491

标签:delegate   调用   对象   使用   编译器   hello   实现   mat   种类型   

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

 

c# 对于委托,事件,泛型的理解

标签:delegate   调用   对象   使用   编译器   hello   实现   mat   种类型   

原文地址:https://www.cnblogs.com/xiaoxinstart/p/12862738.html


评论


亲,登录后才可以留言!