Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 你能让VB.NET编译像C一样严格吗?_C#_Vb.net_Compiler Construction - Fatal编程技术网

C# 你能让VB.NET编译像C一样严格吗?

C# 你能让VB.NET编译像C一样严格吗?,c#,vb.net,compiler-construction,C#,Vb.net,Compiler Construction,在VB.NET中,完全可以将整数作为字符串参数传递给方法,而无需调用.ToString()——甚至可以在不调用()的情况下调用.ToString。代码将毫无问题地运行,VB将把整数解释为字符串,而无需被告知 在C#中,这些将导致编译错误-您需要调用.ToString(),并在这种情况下正确调用它,然后才能编译 有没有办法让VB编译过程检查与C#编译过程相同的东西?在混合团队中,强制执行此检查是最佳做法吗?请确保 Option Strict On Option Explicit On Option

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

在C#中,这些将导致编译错误-您需要调用
.ToString()
,并在这种情况下正确调用它,然后才能编译

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

请确保

Option Strict On
Option Explicit On
Option Infer On
在项目设置中


除此之外,没什么可做的。VB.NET是一种不同的语言,与C#有不同的限制。如果你想让它完全像C#,为什么不干脆切换到C#?

有几个编译器选项可以打开,它们可以完成你想要的大部分工作,即不允许你为字符串传递整数。
您可以在项目设置的“编译”选项卡上进行设置,也可以在类/模块文件的顶部放置
选项Strict on

然而,诸如能够调用
o.ToString
而不是
o.ToString()
之类的功能是语言语义的一部分,您对此无能为力

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


希望这有助于

启用
选项显式
选项严格
将使VB像C一样严格。强烈建议在Visual Studio选项中启用这些选项(以便为每个项目启用)事实上,我建议永远不要禁用这些选项,除非在处理COM互操作(PIA)时,可能是在每个文件的基础上禁用这些选项,在这种情况下,后期绑定确实可以使代码更加简洁


但正如其他人所说,C#和VB是不同的语言,这一点在它们的语法中尤为明显——因此在某个方法调用后省略括号总是可能的,就像C#在语句末尾总是需要分号,而VB不允许分号一样。

在我的特殊情况下,我加入了一个我们的团队es VB.NET。为了保持一致性,所有新项目都是在VB.NET中创建的。但最近当我们讨论差异时,这个问题出现了,我很好奇。@pete:我非常喜欢VB和一致性。但是不同的项目,用不同的语言(如C#和VB)编写,这不是.NET的一大卖点吗可以无缝地协同工作吗?@Konrad:是的,但是如果你的团队负责人更喜欢VB,而另一个开发人员之前唯一没有使用过C#的话……这被解释为“任何人都可以拿起任何项目开始工作。”就我个人而言,我可以毫无问题地在两者之间切换,但我可以看到,对于一些人来说,当他们打开一个不同的项目时,不必在思想上改变方向会更容易。