我很好奇为什么 VB.NET 中的类/属性属性有一个奇怪的可选语法,例如:
<TestAttr("a", "abc", Optional1:="foo", Optional2:=3)>
VB.NET 允许您像这样设置可选参数以避免顺序限制(这很可爱)但在这种情况下它会强制您这样做。
例如这是不可能的:
<TestAttr("a", "abc", "foo", 3)>
即使参数与原始定义的顺序相同。
这有什么好的理由吗?或者只是 .NET 设计者在这个问题上懒惰?
最佳答案
看起来您在这里混淆了可选参数和命名属性参数。对于属性,在构造函数中设置没有相应参数的属性的公共(public)字段/属性是合法的。 VB.Net 选择使用与按名称调用语法相同的语法。
如果您在反射器中打开 TestAttr,我想您会发现该类有一个构造函数,它接受 2 个参数并有 2 个公共(public)字段,名称为 Optional1 和 Optional2。
关于.net - 为什么 VB.NET 中的可选类属性有一个奇怪的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635167/