Ответ 1
Да, они могут быть подавлены.
Обычно я против подавления предупреждений, но в этом случае структуры, используемые для взаимодействия, абсолютно требуют наличия некоторых полей, даже если вы никогда не намереваетесь (или можете) их использовать, поэтому в этом случае я думаю, что это должно быть оправдано.
Обычно, чтобы подавить эти два предупреждения, вы исправите нарушающий код. Первый ( "... никогда не используется" ), как правило, является кодовым запахом остатков из более ранних версий кода. Возможно, код был удален, но поля остались позади.
Второй, как правило, является кодовым запахом для неправильно используемых полей. Например, вы можете неправильно записать новое значение свойства обратно самому свойству, никогда не записывая в поле поддержки.
Чтобы подавить предупреждения для " Поле 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), вы делаете это:
- Скомпилируйте код как обычно, это добавит некоторые предупреждения в ваш список ошибок в Visual Studio
- Переключитесь в окно "Выход" и "Вывод сборки" и выполните поиск тех же предупреждений
-
Скопируйте 4-значный код предупреждения из соответствующего сообщения, которое должно выглядеть следующим образом:
C:\Dev\VS.NET\ConsoleApplication19\ConsoleApplication19\Program.cs(10,28): предупреждение CS 0649: Поле 'ConsoleApplication19.Program.dwReserved' никогда не присвоенный и всегда будет иметь значение по умолчанию 0
Caveat: согласно комментарию @Jon Hanna, возможно, для этого есть несколько предупреждений, для будущих искателей этого вопрос и ответ.
- Во-первых, и прежде всего, действие подавления предупреждения сродни проглатыванию таблеток для головной боли. Конечно, иногда это может быть правильным, но это не решение. Иногда головная боль является настоящим симптомом, который вы не должны маскировать, то же самое с предупреждениями. Всегда лучше попробовать обработать предупреждения, исправив их причину, а не просто слепо удалить их из вывода сборки.
- Сказав это, если вам нужно подавить предупреждение, следуйте шаблону, который я изложил выше. Первая строка кода
#pragma warning disable XYZK
отключает предупреждение для остальной части этого файла или, по крайней мере, до тех пор, пока не будет найден соответствующий#pragma warning restore XYZK
. Минимизируйте количество строк, на которые вы отключили эти предупреждения. Шаблон выше отключает предупреждение только для одной строки. - Кроме того, как упоминает Джон, комментарий о том, почему вы это делаете, - хорошая идея. Отключение предупреждения, безусловно, является кодовым запахом, когда это делается без причины, и комментарий не позволит будущим сопровождающим тратить время или задаваться вопросом, почему вы это сделали, или даже удалив его и пытаясь исправить предупреждения.