C#委托

委托

委托是一个,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

记录方法的一种类型

定义

delegate+返回值+委托名称+(参数类型 参数名称)

定义委托方法的时候,返回值类型和参数要一样(参数类型,顺序,参数个数)

//定义方法
public void Hello(string msg)
{
    Console.WriteLine(msg);
}

//定义委托
delegate void HelloDelegate(string msg);

//初始化委托
HelloDelegate hello=new HelloDelegate(Hello);

//委托调用
 hello.Invoke("参数");//hello(); 可以省略Invoke

泛型委托

通用 代码重用

类型改为 T

//定义方法
public static void AddInt(int a,int b)
{
    
}
public static void AddDouble(double a,double b)
{
    
}

//定义泛型委托
delegate void AddDelegate<T>(T a,T b);

//初始化泛型委托
AddDelegate<int> addDelegate=new AddDelegate<int>(AddInt)
AddDelegate<double> addDelegate=new AddDelegate<double>(AddDouble) 
    

预定义委托

无返回值

Action

//方法
public static void Show(string a,int num)
{
    Console.WriteLine(a);
}
public static void Showthree(int a,int b,int c)
{
    Console.WriteLine(a);
}

//两个参数
Action<string,int> action=new Action<string,int>(Show);
//三个参数
Action<int,int,int> action=new Action<int,int,int>(Showthree);

有返回值

Func

//方法
public static string Show2()
{
    return"返回值"
}
public static int Show3(int a)
{
    return a;
}
//无参数
Func<string> func1=new Func<string>(show2);
//一个参数,最后一个是返回值
Func<int,int> func2=new Func<int,int>(show3);

C#委托

上一篇:【教你赚钱】独立开发者荒野求生之道


下一篇:C# Lambda