C#委托delegate

1.委托最最最基本用法

1.首先应该知道什么是委托。一句话很抽象的话:我委托中介去买房。因为我不是特别会看房,所以要委托别人帮我。(委托其实是面向对象23种设计模式中的一种叫委托模式)看不懂没关系看代码
2.声明一个委托 注意:委托是和类同级别的。
(我这里声明了两个)
3.被委托的函数必须和委托标签一致;
委托 delegate int 委托名(int a, string b)
所委托的函数必须是 int 函数名(int a, string b) 这样形式的函数

namespace CSharpTest
{
    //无参数无返回值的委托
    public delegate void NoArgsDelegate();
    //有返回值的委托
    public delegate int HavrArgsDelegate();

}

3.我声明一个委托对象(中介)

NoArgsDelegate Say;//这样我就得到了一个名为Say的委托对象(通俗讲叫中介)

4.定义两个静态函数

public static void SayWang()
{
    Console.WriteLine("汪汪");
}
public static void SayMiao()
{
    Console.WriteLine("喵~~");
}

5.通过各种方式向委托对象添加函数并通过委托对象(中介)调用函数(仔细看)

			#region delegate
			//定义一个无参委托对象
			//1.通过构造函数的方式向委托添加函数
			//NoArgsDelegate Say = new NoArgsDelegate(SayWang);
			//2.通赋值的方式为委托添加函数  只能添加静态函数
			NoArgsDelegate Say = SayWang;
			Say += SayMiao;
			Console.WriteLine("-----添加函数后");
			Say();
			//3.通过-=删除委托中的函数
			Console.WriteLine("-----删除一个函数后");
			Say -= SayWang;
			Say();
			//4.委托添加匿名函数
			Say += delegate ()
			{
			    Console.WriteLine("我是匿名函数");
			};
			Console.WriteLine("-----添加匿名函数后");
			Say();
			//5.委托通过lambda表达式添加函数
			Say += () =>
			{
			    Console.WriteLine("我是lambda表达式");
			};
			Console.WriteLine("-----通过lambda表达式添加函数后");
			Say();
			#endregion

运行结果
运行结果

2.带返回值委托的返回值测试

1.声明一个带返回值的委托对象并添加两个函数

 		HavrArgsDelegate havrArgs = GetNum1;
        havrArgs += GetNum2;
        Console.WriteLine(havrArgs());
        //上面代码是构造函数里面的
        public static int GetNum1()
        {
            return 1;
        }
        public static int GetNum2()
        {
            return 2;
        }

运行结果
运行结果
答案:带返回值的委托会返回最后一个被添加的函数的返回值

3. .net framework自带的两个委托

第一个:Action action; 无参数无返回值
第二个:Func<int,int,string> func; 泛型里面最后一个参数是返回值类型,前面的是参数列表中类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值