委托delegate Action Func

本文介绍了C#中如何定义和使用委托,包括定义委托类型、实例化委托以及执行委托的操作。同时,文章探讨了泛型委托如Action和Func的使用,它们简化了委托的定义,提供了无返回值和有返回值的委托功能,支持不同数量的参数。

委托

delegate委托

委托的使用

1、定义委托

2、实例化委托

3、执行委托

//1、定义委托
public delegate double Cal(double x,double y);//委托与类同级 可以写在类外
			// 数据类型 委托名(参数1,参数2)

//2、实例化委托
Cal cal =new Cal(Add);//实例化委托 传入委托方法Add

//3、执行委托
double result=cal(6,8);//执行委托 需传入参数
Console.WriteLine($"委托Add计算结果未:{result}");


//Cal cal2=new Cal(Dec);
  Cal cal2=Dec;

  Test(cal2);
  Test(new Cal(Add));
  Test(Dec);


//方法
static double Add(double x,double y)
{
    return x+y;
}

static double Dec(double x,double y)
{
    return x-y;
}

static void Test(Cal f)
{
    Console.Write("请输入X:");
    double x=Convert.Todouble(Console.ReadLine());
    Console.Write("请输入Y:");
    double y=Convert.Todouble(Console.ReadLine());
    //委托方法工作,怎么工作具体由委托决定
    double result=f(x,y);
    Console.WriteLine("X:{0}与Y:{1}委托方法计算结果为:{2}",x,y,result);
  
}

泛型委托

不用再自己定义委托,简化了委托使用过程

Action

无返回值的委托

Action 无参无返

Action 一个参数

Action<T1,T2> 两个参数

Action<T1,T2,····T16> 最多支持16个参数


//1、
Action action = SayHi;
action();
//2、
 Action<string> action1 = SayHi;
action1("你好你好");

//方法
static void SayHi()
{
	Console.WriteLine("你好");
}
static void SayHi(string msg)
{
     Console.WriteLine(msg);
}

Func

有返回值的委托

Func 无参有反

Func<T1,Out> 一个参数 有返

Func<T1,T2,···,T16,Out>

//1、
Func<double, double, double> func = Add;
double result= func(1.1,2.2);
Console.WriteLine(result);
//2、
Func<decimal, int, decimal> func2 = Mul;
decimal result2 = func2(1.2m, 2);
Console.WriteLine(result2); 			



//方法
 static double Add(double x,double y)
        {
            return x + y;
        }

        static decimal Mul(decimal x,int y)
        {
            return x * y;

        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值