C# 委托的使用

一、委托

1、什么是委托?
委托其实就是一个类,是一个方法的容器,可以实现把一个方法作为参数传入另一个方法。

2、简单案例(Delegate委托

using System;

namespace TestDelegation
{
    class Program
    {
        // 定义委托类型及其参数
        public delegate int ArithmeticOperation(int a, int b);  

        static void Main(string[] args)
        {
            // 创建一个委托对象,指向加法运算(委托第一种调用方式)
            ArithmeticOperation add = new ArithmeticOperation(Addition);
            Console.WriteLine("两数之和:{0}", addition(3, 2));

            // 第二种调用方式
            ArithmeticOperation subtract = subtraction;
            Console.WriteLine("两数之差:{0}", subtract(7, 5));

            // 第三种调用方式
            int result = Calculate(4, 5, addition);
            Console.WriteLine("结果是:{0}", result);
            Console.ReadKey();
        }

        // 定义一个方法,接收两个参与运算的数,一个委托参数
        public static int Calculate(int a, int b, ArithmeticOperation operation)
        {
            return operation(a, b);
        }

        // 加法
        public static int Addition(int x, int y)
        {
            return x + y;
        }

        // 减法
        public static int Subtraction(int x, int y)
        {
            return x - y;
        }
    }
}

运行结果:
在这里插入图片描述
说明:
定义一个委托类型,相当于所有运算方法的父类型

public delegate int ArithmeticOperation(int a, int b); 

创建一个运算委托(容器),往运算委托(容器)加入加法运算方法

ArithmeticOperation add = new ArithmeticOperation(addition);

执行运算委托(容器)中的方法(这里执行的是加法运算方法)

Console.WriteLine("两数之和:{0}", addition(3, 2));

通俗的说:委托就像快递公司,我们要寄快递,但是我们寄快递的地址都是不同的,但是我们不用管这些,我们只要将快递要寄的地址告诉快递公司,由快递公司完成。

3、.Net内置的委托

Action 可以传入参数,没有返回值的委托

简单案例

static void Main(string[] args)
{
    Action<int, int> action = new Action<int, int>(ShowAdditionResult);  // 实例化一个委托
    action(4, 5);

    Console.ReadLine();
}

public static void ShowAdditionResult(int number1, int number2)
{
    Console.WriteLine(number1 + number2);
}

Func泛型委托

static void Main(string[] args)
{
    Func<int, int, string> func = new Func<int, int, string>(Addition);
    Console.WriteLine(func(4, 5));

    Console.ReadLine();
}

public static string Addition(int a, int b)
{
    return (a + b).ToString();
}

说明:Func泛型委托前面两个int代表是的参数的类型为int,最后的string,代表这个委托类型的返回值为string类型。

4、总结
Delegate可以无返回值,也可以指定返回值类型。
Func可以传入多个参数,必须具有返回值。
Action可以传入多个参数,无返回值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值