【发布时间】:2011-02-10 02:12:15
【问题描述】:
我有两个重载方法,一个带有可选参数。
void foo(string a) { }
void foo(string a, int b = 0) { }
现在我打电话:
foo("abc");
有趣的是,第一个重载被调用了。 为什么不将可选值设置为零的第二个重载?
说实话,我本以为编译器会带来错误,至少是警告,以避免无意执行错误的方法。
这种行为的原因是什么?为什么 C# 团队会这样定义它?
【问题讨论】:
-
这正是导致潜在错误的糟糕语言设计。内部人员也可以很容易地利用它进行企业间谍活动。我希望他们已经阻止语言允许这样做。
标签: parameters c#-4.0 overloading optional-parameters