3

我只是好奇为什么 VB.NET 中的类/属性属性有一个奇怪的可选语法,例如:

<TestAttr("a", "abc", Optional1:="foo", Optional2:=3)>

VB.NET 允许您设置这样的可选参数以避免订单限制(这很可爱),但在这种情况下,它迫使您这样做。

例如这是不可能的:

<TestAttr("a", "abc", "foo", 3)>

即使参数与原始定义的顺序相同。

这有什么好的理由吗?还是只是 .NET 设计者在这个问题上懒惰?

4

2 回答 2

4

看起来您在这里将可选参数与命名属性参数混淆了。对于属性,在构造函数中设置没有相应参数的属性的公共字段/属性是合法的。VB.Net 选择使用与按名称调用语法相同的语法。

如果你在反射器中打开 TestAttr,我想你会发现这个类有一个构造函数,它接受 2 个参数并有 2 个名为 Optional1 和 Optional2 的公共字段。

于 2009-03-11T15:57:54.290 回答
0

必需的参数是构造函数参数。可选的作为公共可写属性存在。有必要创建提供所有参数的构造函数。这并不总是值得的。

于 2009-03-11T15:59:04.803 回答