网站首页 波兰世界杯 世界杯球星排名 直播吧世界杯
首页 >> 世界杯球星排名
C#个人见解:委托篇1:为什么要有委托,什么是委托

C#个人见解:委托篇1:为什么要有委托,什么是委托

委托是C#中进阶编程中绕不过去的坎。 那么什么是委托呢? 这个问题算不上个问题,什么是委托已经是语法层面的东西了,把它复制粘贴给AI,A...

委托是C#中进阶编程中绕不过去的坎。

那么什么是委托呢?

这个问题算不上个问题,什么是委托已经是语法层面的东西了,把它复制粘贴给AI,AI能给你巴拉巴拉一堆。

为什么要有委托?这才是关键。

我们直接来看一个例子,一个普通的,并不懂委托的程序员有一个普通的任务-->

统计一个数组中有多少个数等于0。

他很快敲好了代码。

很快又有了差不多的任务,有多少个等于1..等于2..

解决方法简单粗暴,复制粘贴,改改函数名,把函数体里的item0改成item1或2。

很快的又是3...4..114514。

终于因为不知道114515的英文而倒下了。

重新振作,这些代码几乎一个样,唯一变化的部分就是每个元素等于几而已,要是这个几能固定就好了。

当然能固定!

这位程序员很快有了通解,于是飞快的敲完了解决这一类问题的代码。

这里的aim不再由写方法的程序员决定,而是由调用的人决定。

您想是几就是几!

紧接着一个很像又不太像的任务来了。

统计有多少数是偶数。

这次这位程序员停了下来,不是因为任务有多难,而是喜欢偷懒的他想要有一劳永逸的方法。

他回想起了最初的任务,为了避免目标简单的变化,他把目标”抽象”了出来。

他的大脑飞速运转...

一个数等不等于谁,又是不是谁,又属于谁...这些东西看似很多,实质上结果却是很少的,

要么是要么不是。

他瞬间有了个伪代码的实现

管它是不是1919810,还是什么雷劈数,还是是否在斐波那契数列中,谁用这个函数谁自己去搞吧!

我只负责加或不加,为什么加,为什么不加,我”委托”给了别人。

这下我们知道为什么要有委托了。

而现在很明显的,我们也能回答什么是委托了?

什么是委托?是那个问号。一个操作,接收一些东西给出一些东西。

这不就是函数嘛!在上图中要是问号真的是函数就好了。

可惜并没有这么简单,因为函数是一个具体的东西,声明函数时一个不定整型能当函数参数,但1,2,3..本身

却并不能在声明时使用,只能在调用时使用。

换言之委托是一个不确定的函数。但又有某种确定的东西,正如int i;你不确定它是几,但能确定它是int。

那么上图中什么是确定的呢?接收的数确定,函数接受的数,不就是输入参数吗?输出的数确定,不就是返回值吗?那还有什么不确定呢?

是不是静态!(开个玩笑),它的过程不确定!

这下我们知道什么是委托了,一个有固定输入参数,固定返回值,但过程也就是函数体不确定的类型。