C#之委托

C#之委托

1、首先,啥子是委托啊
顾名思义,委托就是一个SB啥都不会把自己的作业委托给班长来做,班长看着糟心也就帮SB做了,主要是为了避免被老师骂。
2、委托的定义

  • 声明式定义
    通过关键字delegate来进行定义
    语法格式:修饰符 delegate 返回值类型 委托名称 (参数1,参数2,…)
   //无返回值,无参数
   delegate void SBInvoke();
   //有返回值,有参数
   delegate int JiSuanInvoke(int x,int y);

namespace ConsoleApplication3
{
    delegate void SBInvoke();
    class Program
    {
        static void Main(string[] args)
        {
            //将委托对象作为参数进行传递
            SBInvoke method = SB.show;
            mainMethod(method);
            Console.ReadKey();
        }
        public static void mainMethod(SBInvoke sBInvoke)
        {
            //通过地址引用
            IAsyncResult result = sBInvoke.BeginInvoke(null, sBInvoke);
            sBInvoke.EndInvoke(result);
        }
    }

    public class SB
    {
        //被引用的方法
        public static void show()
        {
            Console.WriteLine("this is SB");
        }
     }
  }
  • 预定义
    Action<in T1, in T2… in T6>只能委托引用一个返回值为 void 有参数或者没有参数的方法
    tips:被引用方法返回值必须为空
namespace ConsoleApplication3
{
    class Test
    {
        static void Main(string[] args)
        {
            Action action = actionMethod;
            action();

            Action<string> action2 = actionMethod2;
            action2("world");

            Console.ReadKey();
        }
        
       //无参Action
        public static void actionMethod()
        {
            Console.WriteLine("hello");
        }

        //有参Action
        public static void actionMethod2(string str)
        {
            Console.WriteLine("hello "+str);
        }
    }
}

Func<in T1, in T2… in T16, out TResult>引用的方法必须要有返回值,可以带0到16个参数
tips:被引用方法返回值必须要有(泛型最后一个参数是返回值类型

namespace ConsoleApplication3
{
    class Test
    {
        static void Main(string[] args)
        {
            Func<string> func = funcMethod;
            Console.WriteLine( func());
            
            Func<int, int, int> func2 = funcMethod2;
            Console.WriteLine( func2(10, 30) );

            Console.ReadKey();
        }
        //无参func
        public static string funcMethod()
        {
            return "无参数的func";
        }
        //有参func
        public static int funcMethod2(int a,int b)
        {
            return a + b;
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值