2013-03-30 55 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,部分原因在于其他人在开发人员的合理决定和懒惰掩饰之间看待它的差异。 –