In 这个问题 https://stackoverflow.com/q/21904767/592111,定义了以下类:
public class Program
{
int n = 0;
public void Print()
{
Console.WriteLine(n);
}
public Program()
{
}
public Program(int num = 10)
{
n = num;
}
}
现在,显然这里使用了对构造函数的调用new Program()
由于第二个构造函数上的可选参数不明确。阅读本文时不清楚是否n
应该初始化为0
or 10
.
However:
问题的实际报告似乎不一致。设置这个类并使用它我能够使用new Program()
在 C# 或 VB.Net 以及 .Net 4 或 .Net 4.5 中。所有测试均在VS2013中完成。
但在链接的问题中,OP 在 .NET 4 和 VS2010 中使用 VB.Net 时实际上收到了错误消息:
“.ctor”不明确,因为“ConsoleApplication2.Program”类中存在多种具有此名称的成员。
那么为什么有时会出错,有时却能成功执行呢?
参考值n
执行成功时为0。
因为 VB 语言在版本 10 和11 http://www.microsoft.com/en-us/download/details.aspx?id=15039。在第 11 版语言规范中,第 11.8.1 节。添加了决胜规则 7.9:
7.9。如果 M 没有使用任何可选参数默认值来代替显式参数,但 N 却使用了,则从集合中消除 N。
(规则 7.8 和 7.10 也是如此,但与此处无关)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)