c#中委托的用法

2021-04-01 05:27

阅读:830

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。

1.委托的声明

 Delegate 类

    Delegate是一种引用类型,我们在处理他的时候要当作类来看待而不是方法,说白了委托就是对方法或者方法列表的引用,调用一个委托实例就好像是调用c++中的指针一    样,他封装了对制定方法的引用,或者说委托起到的是桥梁的作用,实例后的委托对象会将给定的参数传递给他所回调的方法,并去执行方法。

  Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。

    例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型。

public delegate void myDelegate(string str); 
public static void HellowChinese(string strChinese) 
{ 
    Console.WriteLine("Good morning," + strChinese); 
    Console.ReadLine(); 
} 
   
myDelegate d = new myDelegate(HellowChinese); 
d("Mr wang");

匿名方法

c#中几个常用的委托(Action,Func,predicate)

Action 是无返回值的泛型委托

public delegate void Actionin T1, in T2, in T3, in T4>(
    T1 arg1,
    T2 arg2,
    T3 arg3,
    T4 arg4
)

Action 是对委托的使用的简化

public static void HellowChinese(string strChinese) 
{ 
    Console.WriteLine("Good morning," + strChinese); 
    Console.ReadLine(); 
} 
   
Actionstring> action = HellowChinese; 
action("Spring.");

Func 是有返回值的泛型委托

public delegate TResult Funcin T1, in T2, in T3, out TResult>(
    T1 arg1,
    T2 arg2,
    T3 arg3
)

Func 也是对委托的使用的简化

public static string HelloEnglish(string strEnglish) 
{ 
    return "Hello." + strEnglish; 
} 
   
Funcstring, string> f = HelloEnglish; 
Console.WriteLine(f("Srping ji")); 
Console.ReadLine();

prediccate 是返回bool型的泛型委托,且有且只有一个参数

public delegate bool Predicatein T>(
    T obj
)

关于委托和事件的使用

委托可以将方法当作参数传递,事件是一个特殊的委托,事件相当于一个button按钮的动作

在方法里面的参数传入委托的形式参数方法,在方法里面调用该方法

在其它地方调用该方法时,参数可以传递方法。

事件:声明委托和事件后

在方法中调用该事件

其它地方调用上述方法时就会执行该事件

自定义控件中声明时间可以当控件的事件使用加上on事件名称

      


评论


亲,登录后才可以留言!