委托,实例,代码

来源:互联网 发布:网络教育学历 编辑:程序博客网 时间:2024/06/03 21:54

  委托的本质就是类型,但是和其他类型需要进行区分的是,委托是方法的类型。应用委托可以结合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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 近视镜片磨花了怎么办 眼镜镜片磨花了怎么办 戴眼镜鼻梁有印怎么办 狗狗发烧怎么办最有效 狗狗感冒怎么办最有效 狗狗发烧去医院怎么办 眼睛里长了虫子怎么办 吃了没熟的猪肉怎么办 没熟的鸡肉吃了怎么办 狗狗大便有绦虫怎么办 吃了有虫的猪肉怎么办 米猪肉吃了会怎么办 吃了鱼的寄生虫怎么办 鱼身体里有线虫怎么办 幼猫半夜一直叫怎么办 猫半夜4点叫不停怎么办 眼睛里长了黄斑怎么办 眼睛周围长小疙瘩怎么办 眼睛被手机砸了怎么办 眼睛被东西砸了怎么办 眼睛被打了一下怎么办 眼睛被树枝伤了怎么办 眼球被打了一下怎么办 眼睛黄有血丝是怎么办 上眼皮有异物感怎么办 20岁眼周围皱纹怎么办 才22岁眼睛皱纹怎么办 眼周围发干皱纹怎么办 眼周围淤血肿了怎么办 每到秋季就咳嗽怎么办 左肾泥沙样结石怎么办 双肾泥沙样结石怎么办 温州市民卡丢了怎么办 上眼皮过敏肿了怎么办 上眼皮又痒又肿怎么办 上眼皮红肿痛是怎么办 上眼皮肿的厉害怎么办 眼皮肿了还痒痒怎么办 眼睛被手指戳到怎么办 打球眼睛撞肿了怎么办 打球时眼睛被戳怎么办