C#委托:delegate、Action、Func

目录

文章目录

前言

1.语法

2.示例

3.委托传参

二、Action

1.无返回值的预定义委托

 三、Func

1.有返回值的预定义委托


前言

委托的本质:理解1-将函数作为参数进行传递;理解2-是一种特殊的类型。

使用步骤:1.声明委托;2.设置目标方法;3,调用委托。


一、Delegate

1.语法

(1)委托声明:修饰符+返回类型+委托名称+参数名。

[access modifier] delegate [return type] [delegate name]([parameters])

(2)设置目标方法

2.示例

//(1)声明委托
public delegate void MyDelegate(string msg);

//(2)设定目标方法
MyDelegate de1 = new MyDelegate(ClassA.MethodA);
//(2)设定目标方法-简写
MyDelegate de1 = ClassA.MethodA;

//(3)目标方法调用
de1.Invoke("Hello World");
//(3)目标方法调用-简写
de1("Hello World");

class ClassA
{
   public static void MethodA(string message)
    {
        Console.WriteLine("ClassA with parameter: " + message);
    }

}

3.委托传参

static void InvokeDelegate(MyDelegate del) // MyDelegate类型参数
{
    del("Hello World");
}

二、Action

1.无返回值的预定义委托

public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);//泛型委托 

Action<string, int> action = new Action<string, int>(ClassC.MethodC);
action("Hello World", 3);

class ClassC
{
    public static void MethodC(string message,int num)
    {
        Console.WriteLine("ClassC with parameter: " + message+ num);
    }

}

 三、Func

1.有返回值的预定义委托

public delegate <T3,T4>Action<in T1, in T2>(T1 arg1, T2 arg2);//泛型委托 

Func<string, int, string> func = new Func<string, int, string>(ClassD.MethodD);
string result= func("Hello World", 4);

class ClassD
{
    public static string MethodD(string message, int num)
    {
        Console.WriteLine("ClassD with parameter: " + message + num);
        return message + num.ToString();
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值