日期:2014-05-16  浏览次数:20995 次

C#的可选参数,为什么一定要放在参数列表的最后?
我没看出来,为什么C#要搞这样的一个限定。这种限制的意义究竟在于什么呢?是编译器的实现更容易,还是说,不这么限定,会出什么乱子?
------解决方案--------------------
因为可选参数可以不写。
如果放在中间,你怎么知道哪个参数对应哪个?比如
void foo(int a, int b = 0, int c, int d = 0);
调用
foo(1, 2, 3);
到底2是c 3是d还是2是b 3是c?
------解决方案--------------------
引用:
我没看出来,为什么C#要搞这样的一个限定。这种限制的意义究竟在于什么呢?是编译器的实现更容易,还是说,不这么限定,会出什么乱子?


如果你用net4.0以上版本,就可以随变定义可选参数的名称了,加入名称后,你想怎么定义他的顺序都成吧。
------解决方案--------------------
反向思维下,如果可以放在开头或者中间会怎么样。。。。。。


我记得,C++也是要求放在最后的。