你能否像C#一样严格地进行VB.NET编译?

时间:2010-03-12 11:47:38

标签: c# vb.net compiler-construction

在VB.NET中,完全可以将一个整数作为字符串参数传递给方法而不调用.ToString() - 甚至可以在没有()的情况下调用.ToString。代码将运行没有问题,VB将整数解释为字符串而不被告知。

在C#中,这些会导致编译错误 - 在编译之前,您需要调用.ToString()并在该情况下正确调用它。

有没有办法让VB编译过程检查与C#编译过程相同的东西?混合团队的最佳做法是强制进行检查吗?

3 个答案:

答案 0 :(得分:9)

您可以打开几个编译器选项,Option Strict将执行您想要的大部分操作,即不允许您传递字符串的整数。
您可以在项目设置的“编译”选项卡上进行设置,也可以将Option Strict On放在类/模块文件的顶部。

然而,能够调用o.ToString而不是o.ToString()之类的东西是语言语义的一部分,你无法做任何事情。

如果您真的想要像C#一样编译,那么您必须使用C# 对不起:(

希望这有帮助

答案 1 :(得分:3)

确保你有

Option Strict On
Option Explicit On
Option Infer On

在您的项目设置中。

除此之外,做不了多少。 VB.NET是一种不同的语言,并且与C#有不同的限制。如果你想使它完全像C#,为什么你不能简单地切换到C#?

答案 2 :(得分:3)

启用Option ExplicitOption Strict会使VB 与C#一样严格。强烈建议在Visual Studio选项中启用这些选项(以便为每个项目启用它们)。事实上,我建议永远不要禁用这些选项,除非在处理COM互操作(PIA)时基于每个文件,其中后期绑定可以真正使代码更简洁。

但正如其他人所说,C#和VB 不同的语言,这在语法上尤其明显 - 因此在某些方法调用之后省略括号总是可能的,就像C#总会这样在VB不允许的情况下,在语句结束时需要使用分号。