【C#】什么是方法组?

文章探讨了C#中的方法组概念,强调其为一组可能包含多个同名方法的编译时构建。方法组的选择取决于上下文,而不仅仅是名称。作者还讨论了委托如何实现类似功能,并提出了方法名称是否应被视为方法组的争议。
摘要由CSDN通过智能技术生成

解释1:C#本质论:

解释2:C# 中的方法组 | D栈 - Delft Stack

深入理解C#中也提过,大意与上图解释一样。

C# 中的方法组 | D栈 - Delft Stack中还提到过一个奇怪的例子:

重点在于最后一句话,它竟然推翻了自己的论述?把不同名称的方法概括起来称为一个方法组??

这个问题我们放到最后再解释。

解释3:c# - 什么是 C# 中的方法组? - IT工具网 (coder.work)

原文:A method group is the name for a set of methods (that might be just one) 

那么问题出现了,什么是一组方法(a set of methods )?

我在详细的阅读了原网站下的内容后,看到一个很有趣的解释:

  • Yes, and the point is that a method group is a compile-time construct. The compiler chooses one method overload according to the context where the message group is used. 

  • (是的,重点是方法组是一个编译时构造。编译器根据使用消息组的上下文选择一个方法重载。)

也就是说,一组方法确实表示的是同名的方法。

解释4:MSDN解释

The method group identifies the one method to invoke or the set of overloaded methods from which to choose a specific method to invoke

如下图,我们可以随便将两种方法名相加,便会报错:

同样MSDN的解释也是:同名方法称为方法组。

那么最后尝试解释解释2中为什么最后又把非同名的方法称为同一方法组。看了上述的描述,我们对方法组都有了大概的了解:同名,可以根据我们输入实参的不同,编译器自己从同名的方法组中进行选择。而对于返回值和形参均满足一种委托的方法们,我们的委托恰恰也可以做到差不多的效果:同返回值和形参可以根据我们输入方法名的不同,编译器从同返回值和形参的方法中进行选择。

这么一对比,是不是就很相似?(笑,有点强行解释的意思了)

最后的最后,

我们到底把:

                方法名()

称为方法组,

还是把:

                方法名

称为方法组呢?

我个人是认为把 方法名 称为方法组的,毕竟方法名()在调用时其实编译器就已经做出了选择(选择了无行参的那个方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值