tnblog
首页
视频
资源
登录
不帅~~但是很暖心.....
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

C#委托_Action和Func (方法可以当作一个参数传递)

11523人阅读 2019/9/29 11:16 总访问:342662 评论:1 收藏:1 手机
分类: .net

大家好,好久不见哦!前段时间因为忘记了帐号了没有更新了哈哈!

今天普及一下自己学到的新花样,在C#里面方法居然可以当参数传递?好奇怪是不是...

首先这个定义成为委托   OK废话不多说 上代码


我们定义一个类MyTime 里面添加一个方法

//定义一个私有方法,输出一句话
        private void nameHappy(string name)
        {
            Console.WriteLine(name+"国庆快乐");
        }

然后再定义一个无返回值有参数的方法Excute

public void Excute(string name)
        {
            nameHappy(name);
        }

上面的Excute就是委托的方法,相当于用户委托这个方法执行其他任意的方法,里面可以做一些业务逻辑操作等等..

然后我们在主函数(Main())入口执行操作,如下代码:

static void Main(string[] args)
        {
            MyTime mytime = new MyTime();
            Action<string> acction = mytime.Excute;
            acction("赖总");
        }

上面如下截图解释:

运行代码:


上面所说的是没有返回值委托方法 使用Action委托


下面我们来看一下如果委托方法有参数呢?怎么办

上代码

在MyTime里定义一个Num私有方法

private int Num(int num1, int num2)
        {
            return num1 + num2;
        }


委托方法GetNum方法返回计算结果:

public int  GetNum(int num1, int num2)
        {
            return Num(num1, num2);
        }


然后再主函数入口


static void Main(string[] args)
        {
            MyTime mytime = new MyTime();
            //Action<string, int> acction = mytime.Excute;
            //acction("赖总", 70);
            Func<int, int, int> func = mytime.GetNum;
            int result = func(2, 3);
            Console.WriteLine("计算结果为:" + result);
            //Action<int, int> action_time = mytime.timeout;
            //action_time(70, 500);
            
        }


上面代码如截图解释:


运行代码:


这是我对于委托的理解  如果有高见 欢迎指导哦!

作用:委托可以在委托方法里做一些逻辑操作,提高效率,简化代码...

但是对于小编来说还是要花点小时间来理解这个委托这种东西哈 哈哈

OK本期结束,下期再见 谢谢浏览阅读....

评价