2012-10-24 45 views
6

我最近从一个C#团队切换到了vb.net团队。我无法找到答案的其中一件事是编译错误/选项的差异。让我解释。为什么VB.NET中没有错误

在C#中,我会使用默认设置在尝试将无效类型传递给像下面这样的模板类时出现编译时错误。在这里我创建一个带有字符串类型的动物,然后我传入一个导致编译错误的日期时间。

IAnimal<string> animal = new Animal<string>(); 
animal.SetTrainer(DateTime.Now); 

我知道我会在vb.net中得到与“Option Strict”相同的编译时错误。然而,在同一个文件中有很多遗留(VB)代码,它们将不能用“Option Strict”进行编译。我有什么选择。我这样想:

  1. 切换到“选项严格”并修复所有错误。需要一些时间并可能破坏工作代码。
  2. 也许有一种替代方法可以确保编译时检查泛型。毕竟所有的泛型都比较新,所以也许总有一种方法来执行这个。

在此先感谢

回答

6

双击您的项目 - >我的项目。

转到编译并寻找Warningconfiguration

现在你可以更改某些设置。

  • 隐式转换
  • 后期绑定

不要让他们的错误,但警告。

这不会造成编译时错误,但您至少可以看到一些警告。

另一个解决方案是让您的类成为部分类并将您的代码移动到新文件中。您可以在每个文件的基础上设置Option Strict/Option Explicit。

+5

+1非常同意。但是如果你介意这一点,我会**在项目级**上启用Option Strict,并且我会为每个文件添加** Option Strict Off **,如果没有它,将不会编译。一步一步,你会努力重构现有的代码。 –

+0

感谢您分享您对此的看法。我将与我的团队 – Flodpanter

+0

@Adriano +1讨论它 - 这可能是最好的解决方案。 –

3

切换到“选项严格”并修复所有错误。需要一些时间并可能破坏工作代码。

是的,那样做。它会帮助你保持清醒。

大多数会弹出的错误可能是简单的铸造问题,这些问题很容易解决(这里有一个CInt,这里有一个ToString() ......)。

您无需一次性修复整个解决方案或项目,因为您可以在文件级别启用Option Strict On。让它成为修复每个文件的好习惯,因为您必须触摸它。

这并不总是可能的,但您也可以将严重依赖于Option Strict On(例如COM东西)的代码移动到另一个文件而不中断更改。

+0

谢谢。我完全同意“选择严格”是一条路。现在我只需要说服我的团队:-) – Flodpanter

+0

+1可以修复每个错误,因为您发现它。 – MarkJ

相关问题