在VB.NET中,完全可以将一个整数作为字符串参数传递给方法而不调用.ToString()
- 甚至可以在没有()的情况下调用.ToString
。代码将运行没有问题,VB将整数解释为字符串而不被告知。
在C#中,这些会导致编译错误 - 在编译之前,您需要调用.ToString()
并在该情况下正确调用它。
有没有办法让VB编译过程检查与C#编译过程相同的东西?混合团队的最佳做法是强制进行检查吗?
答案 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 Explicit
和Option Strict
会使VB 与C#一样严格。强烈建议在Visual Studio选项中启用这些选项(以便为每个项目启用它们)。事实上,我建议永远不要禁用这些选项,除非在处理COM互操作(PIA)时基于每个文件,其中后期绑定可以真正使代码更简洁。
但正如其他人所说,C#和VB 是不同的语言,这在语法上尤其明显 - 因此在某些方法调用之后省略括号总是可能的,就像C#总会这样在VB不允许的情况下,在语句结束时需要使用分号。