我在C#项目中有一个HTTPSystemDefinitions.cs文件,该文件基本上描述了较旧的Windows ISAPI,供托管代码使用。
这包括与ISAPI相关的完整结构集,而不是全部或被代码使用。在编译时,这些结构的所有字段成员都将引起如下警告:
警告字段’UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader’从未分配给该字段,并且其默认值始终为null
要么
警告从未使用字段’UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus’
这些可以禁用#pragma warning disable吗?如果是这样,相应的错误号是什么?如果没有,我还能做什么?请记住,我只是要对此文件执行此操作,重要的是我可以看到其他文件发出的此类警告。
#pragma warning disable
编辑
示例结构:-
struct HTTP_FILTER_PREPROC_HEADERS { // // For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value. // Header names should include the trailing ':'. The special values // 'method', 'url' and 'version' can be used to retrieve the individual // portions of the request line // internal GetHeaderDelegate GetHeader; internal SetHeaderDelegate SetHeader; internal AddHeaderDelegate AddHeader; UInt32 HttpStatus; // New in 4.0, status for SEND_RESPONSE UInt32 dwReserved; // New in 4.0 }
是的,这些可以被抑制。
通常,我反对抑制警告,但是在这种情况下,用于互操作的结构绝对需要存在一些字段,即使您从未打算(或可以)使用它们,因此在这种情况下,我认为这应该是有道理的。
通常,要禁止这两个警告,您将修复有问题的代码。第一个(“ …永不使用”)通常是早期版本代码遗留下来的代码气味。也许代码已删除,但字段留在后面。
第二个通常是针对错误使用字段的代码气味。例如,您可能会错误地将属性的新值写回到属性本身,而不要写入后备字段。
要禁止显示“ 从不使用字段XYZ ”的警告,请执行以下操作:
#pragma warning disable 0169 ... field declaration #pragma warning restore 0169
要取消警告“ 字段XYZ从未分配给它,并且将始终具有其默认值XX ”,请执行以下操作:
#pragma warning disable 0649 ... field declaration #pragma warning restore 0649
要自己找到此类警告编号(即,我怎么知道使用0169和0649),请执行以下操作:
C:\ Dev \ VS.NET \ ConsoleApplication19 \ ConsoleApplication19 \ Program.cs(10,28):警告CS 0649 :从未将字段’ConsoleApplication19.Program.dwReserved’分配给该字段,并且其默认值始终为0
警告 :根据@Jon Hanna的评论,可能为此发出了一些警告,以供将来查找此问题和答案的人使用。
#pragma warning disable XYZK
#pragma warning restore XYZK