2013-03-30 56 views
15

我已經使用c#創建第一個項目。 我有很多警告錯誤,並且所有這些警告錯誤都是單個錯誤(內部編譯器錯誤。請參閱控制檯日誌以獲取更多信息。)#pragma警告禁用和恢復

用於減少警告錯誤我使用了#pragma警告禁用。 #pragma警告恢復 有問題的代碼的前面和後面。

我有疑問,在我的最終版本,我應該留下的#pragma警告禁止&恢復,因爲它是在程序;還是我需要刪除?例如:

#pragma warning disable 
if (Displayer.instance != null && CTR.Tore== "Keepit") 
{ 
    Displayer.instance.SetFielderProfile (i); 
} 
#pragma warning restore 

對於最終構建我是否需要刪除或不刪除?

回答

6

如果是任何實用價值的代碼,你不應該有任何警告,並「警告視爲錯誤」設置與所有警告啓用編譯。

您顯示的代碼似乎並不像它本身有任何錯誤。所以我看不出爲什麼你需要編譯指示。

但真的是你的電話 - 你的代碼,如果沒有人需要使用/外觀/買單 - 爲你做什麼工作。

+0

感謝您的回覆。 。 – SaravanaKumar

+0

我不同意。例如,我曾有過需要從某些接口繼承的類。這些接口有時會發生一些我不需要的事件。爲什麼不把關於未使用的事件的警告推掉呢? –

+0

@shaitibber如果你有充分的理由(並提供良好的內聯評論) - 禁用偶然的內聯警告是完全正確的。問題中的代碼顯示沒有跡象表明這種編譯指示是必要的......我相信你提到的情況不應該引起警告,因爲接口的實現不能被編譯器視爲「未使用」 - 要求單獨的問題你有警告可能是個好主意(確保搜索是否已經有好的答案,關於你得到的任何警告)。 –

34

至少應該具體說明您故意選擇忽略哪些警告。這樣,如果以後的維護引入了一個您應該知道的「新」警告/問題,則有關新引入的錯誤的警告不會被您的一攬子附註警告禁用指令所抑制。

您可以從Visual Studio中的構建輸出窗口中獲得有關您決定忽略的構建問題的警告編號。他們通常被標記爲「警告CS0168 ....」或類似的。在這種情況下,您可以專門針對您決定忽略的那些錯誤(例如:

#pragma warning disable 168, 3021 

    //Your code that generates warnings CS0168 and CS3021 here 

#pragma warning restore 168, 3021 
+15

+1。我會添加一個建議,即總是有一條評論,解釋爲什麼0128和3021不適用於此;部分原因是如果你不能寫出一個好的理由,那麼你只是隱藏了一個bug,部分原因在於其他人在開發人員的合理決定和懶惰掩飾之間看待它的差異。 –