2012-10-24 47 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

相關問題