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

被折叠的 条评论
为什么被折叠?



