C#零基础学习之委托

C#零基础学习之路——委托

一. 学习背景

基于学习b站刘老师的c#入门,整理学习心得。

二. 委托

2.1 什么是委托

委托的简要理解:委托其实就是c/c++中的函数指针,只是在c#中换了一种表现形式。

2.2 简单的委托

下面我们使用c#自带的委托,Action和Func委托,老样子,打开编译器,键入代码,代码1:

using System;

namespace DelegateExample
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 100;
            int y = 200;
            int z = 0;
            Calculator calculator = new Calculator();

            //使用Action委托,注意传进去的参数为函数名。
            Action action = new Action(calculator.Report);

            Func<int, int, int> func1 = new Func<int, int, int>(calculator.Add);
            Func<int, int, int> func2 = new Func<int, int, int>(calculator.Sub);

            calculator.Report();
            action.Invoke();    //action();
            z = func1.Invoke(x, y);            
            Console.WriteLine(z);
            z = func2.Invoke(x, y);
            Console.WriteLine(z);
            Console.ReadKey();
        }

        class Calculator
        {
            public void Report()
            {
                Console.WriteLine("I have three methods");
            }

            public int Add(int a, int b)
            {
                int result = a + b;
                return result;
            }

            public int Sub(int a, int b)
            {
                int result = a - b;
                return result;
            }
        }
    }
}

代码说明:仔细观察,委托的使用方法跟类一样,先创建实例然后调用方法,其实委托是一种类,下面开始学习自定义委托。

2.2 自定义委托

委托虽然是一种类,但是它的声明和一般类不同。它的声明格式是仿照c/c++的函数指针声明的,代码2:

using System;

namespace DelegateExample
{
    public delegate int Calc(int x, int y);

    class Program
    {
        static void Main(string[] args)
        {
            int result = 0;
            Calculator calculator = new Calculator();
            Calc calc1 = new Calc(calculator.Add);
            Calc calc2 = new Calc(calculator.Sub);

            result = calc1.Invoke(100, 500);
            Console.WriteLine(result);
            result = calc2.Invoke(100, 500);
            Console.WriteLine(result);
            Console.ReadKey();
        }

        class Calculator
        {
            public int Add(int a, int b)
            {
                int result = a + b;
                return result;
            }
            
            public int Sub(int a, int b)
            {
                int result = a - b;
                return result;
            }
        }
    }
}

代码说明:这里自定义了一个Calc委托,委托是类,声明委托跟类同级,public表示公开,delegate表明要声明一个委托。目标方法的返回值为int,参数列表为(int x,int y)。故该委托能封装返回值类型为int,参数列表为(int,int )的函数。注意委托的声明位置。日后研究委托的应用。

三. 总结

没啥总结的,注意委托和目标函数就行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值