委托,实例,代码

  委托的本质就是类型,但是和其他类型需要进行区分的是,委托是方法的类型。应用委托可以结合lambda表达式将方法作为参数进行传递

 (注意:以下每一个实例都是可以直接复制进行运行的,可以自己进行尝试尝试)

   委托类型实例1:将返回值和接受的参数类型相同的方法直接赋值给委托使用:直接见代码:

Program.cs类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace @delegate
{
    class Program
    {
        //定义一个返回值为int,参数为两个int类型的委托
        public delegate int delegateAdd(int a,int b);
        static void Main(string[] args)
        {
            delegateAdd d = add;
            Console.WriteLine(d(1,2));
            Console.ReadKey();
        }
        /// <summary>
        /// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int add(int a ,int b)
        {
            return a + b;
        }
    }
}

委托类型实例2:可以直接将lambda表达式赋值为委托,然后通过委托直接调用,这样就不用生命一个参数,直接通过一个匿名函数就可以,是不是很方便呢?直接见下列代码

Program.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace @delegate
{
    class Program
    {
        //定义一个返回值为int,参数为两个int类型的委托
        public delegate int delegateAdd(int a,int b);
        static void Main(string[] args)
        {
            delegateAdd d = (a, b) => { return a - b; };
            int c = d(5, 3);
            Console.WriteLine(c);
            Console.ReadKey();
        }

}

}

委托类型实例3:通过委托可以将方法作为参数传递过去,不难理解,之前我们接触的都是一个方法里面传递若干个参数进行操作,那么就不能将方法作为参数进行传递么?是可以的,看代码:

Program.cs文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace @delegate
{
    class Program
    {
        //定义一个返回值为int,参数为两个int类型的委托
        public delegate int delegateAdd(int a,int b);
        static void Main(string[] args)
        {
            int r=add(testDelegate);
            Console.WriteLine(r);
            Console.ReadKey();
        }
        /// <summary>
        /// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int add(delegateAdd delegateAdd)
        {
           return  delegateAdd(2,4);
        
        }
        /// <summary>
        /// 测试将这个方法作为参数进行传递
        /// </summary>
        public static int testDelegate(int a ,int b)
        {
            return a + b;
        }
    }
}

委托类型实例4:通过委托可以将方法作为参数传递过去,不难理解,之前我们接触的都是一个方法里面传递若干个参数进行操作,那么就不能将方法作为参数进行传递么?是可以的,除了上述的将方法名进行传递,同样也是可以通过传递lambda进行传递的,直接见代码,代码都是经过测试的,可以直接运行哦!

Program.cs文件


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace @delegate
{
    class Program
    {
        //定义一个返回值为int,参数为两个int类型的委托
        public delegate int delegateAdd(int a,int b);
        static void Main(string[] args)
        {
            int r = add((a, b) => { return a+b});
            Console.WriteLine(r);
            Console.ReadKey();
        }
        /// <summary>
        /// 定义和委托类型相同条件的方法,返回int 类型的数据,接收两个int类型的参数
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        public static int add(delegateAdd delegateAdd)
        {
           return  delegateAdd(2,4);
        
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值