不同类型,相同名称的方法名能重载吗?
比如
double Area()
int Area()
[解决办法]
好像可以吧,你测试一下就知道了啊。定义这两个函数后编译能通过应该就可以了。
[解决办法]
方法签名包括两部分,方法名和参数列表,方法签名决定了两个方法是否相同。
方法名和参数列表相同的方法就是同一个方法,编译器是无法区分开两个相同的方法的。
[解决办法]
不能重载, 在你调用的时候是这样的
Area();
这时候不能确定返回值类型,也就是说不能确定调用的是哪个方法,所以不能重载
[解决办法]
应该说,允许和不允许只有返回值不同的方法重载各有利弊。
为什么C#不允许这么做,5L和6L说的两种情况是主要原因,隐式转换和无返回值调用会引起混淆,尤其是导致程序出现难以察觉的BUG。同时使得语言变得复杂,我想这是C#设计者不允许这么重载的初衷吧。
但是的确可以在IL层面上这么定义,并且用反射进行调用。这也许是微软希望不把这个路堵死,以便某个基于IL的语言仍然可以启用这样的特性。
[解决办法]