在VB.NET中,完全可以将一个整数作为字符串参数传递给方法,而不需要调用.ToString()
- 甚至可以在没有()的情况下调用.ToString
。该代码将运行没有问题,VB会将该整数解释为字符串,而不会被告知。你可以像VB一样严格地编译VB.NET吗?
在C#中,这些会导致编译错误 - 您需要调用.ToString()
并在编译之前正确调用它。
有没有办法让VB编译过程检查与C#编译过程相同的东西?在混合团队中强制执行此项检查是否是最佳做法?
在VB.NET中,完全可以将一个整数作为字符串参数传递给方法,而不需要调用.ToString()
- 甚至可以在没有()的情况下调用.ToString
。该代码将运行没有问题,VB会将该整数解释为字符串,而不会被告知。你可以像VB一样严格地编译VB.NET吗?
在C#中,这些会导致编译错误 - 您需要调用.ToString()
并在编译之前正确调用它。
有没有办法让VB编译过程检查与C#编译过程相同的东西?在混合团队中强制执行此项检查是否是最佳做法?
有几个编译器选项可以打开,Option Strict将执行你想要的大部分内容,即不允许你为字符串传递一个整数。
您可以在Compile选项卡上为您的项目设置进行设置,也可以将Option Strict On
放在类/模块文件的顶部。
然而,像能够呼叫o.ToString
而不是o.ToString()
这些东西是语言语义的一部分,您无法对此做任何事情。
如果你真的想要像C#那样编译的东西,那么你必须使用C#。
对不起:(
希望这有助于
确保在您的项目设置有
Option Strict On
Option Explicit On
Option Infer On
。
除此之外,没有什么可以做的。 VB.NET是一种不同的语言,并且对C#有不同的限制。如果你想使它完全像C#一样,为什么你不简单地切换到C#?
启用Option Explicit
和Option Strict
将使VB 严格的C#。启用在Visual Studio中的选项,这些选项强烈推荐(这样他们会为每一个被启用项目)实际上,我建议不要禁用这些选项,除了在处理COM互操作(PIA)的时候,或许在每个文件的基础上,后期绑定确实可以使代码更简洁。 ,C#和VB 是不同的语言,这在他们的语法中尤其明显 - 所以在某些方法调用之后省略括号总是可能的,就像C#总是在他们的语句结尾处需要分号而VB不允许它们一样。
在我的具体情况中,我加入了一个使用VB.NET的团队。所有新项目都是在VB.NET中创建的,以保持一致性。但是最近我们讨论差异时出现了这个问题,我很好奇。 – 2010-03-12 11:59:13
@pete:我是VB的狂热粉丝,并且一贯。但是,不是.NET的一大卖点,用不同语言编写的不同项目(即C#和VB)可以无缝地协同工作? – 2010-03-12 12:25:46
@Konrad:是的,但是如果你的团队领导喜欢VB,并且唯一的其他开发者之前没有使用过C#,那么它被解释为“任何人都可以拿起任何项目并开始工作”。 就我个人而言,我可以在没有问题的情况下进行翻转,但我可以看到,有些人在打开不同的项目时不必在思维上改变齿轮,这样会更容易。 – 2010-03-12 12:45:33