繁体   English   中英

为什么 VB.NET 中的可选 class 属性有一个奇怪的语法?

[英]Why do optional class attributes in VB.NET have a weird syntax?

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

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

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

例如这是不可能的:

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

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

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

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

如果你在反射器中打开 TestAttr,我想你会发现 class 有一个构造函数,它需要 2 个 arguments 并且有 2 个名为 Optional1 和 Optional2 的公共字段。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM