如何摆脱Visual Studio中“从未使用”的“某些事件”编译器警告?

例如,我得到这个编译器警告,“

事件“Company.SomeControl.SearchClick”从不使用。

但是我知道它被使用,因为注释它会抛出20个尝试使用这个事件的XAML页面的新警告!

是什么赋予了? 有摆脱这个警告的伎俩吗?

这似乎是警告67 ,因此可以通过以下措施予以抑制:

#pragma warning disable 67 

不要忘记尽快(在事件声明之后)恢复:

 #pragma warning restore 67 

不过,我再次检查一下,确保你在某个地方举办活动,而不是仅仅订阅活动。 事实上编译器吐出20个警告,而不是20个错误,当你注释掉事件也是可疑的…

还有一篇关于这个警告的有趣文章 ,特别是它如何应用于接口; 对于如何处理“未使用”的事件有一个很好的build议。

如果您被迫从接口实现事件,那么您的实现不需要,您可以执行以下操作来避免该警告。

 public event EventHandler CanExecuteChanged { add{} remove{} } 

第二个最好的方法是明确地表明,如果有人试图订阅,则不会抛出exception来支持该事件。

 public event RoutedEventHandler SearchClick { add { throw new NotSupportedException(); } remove { } } 

作为一个变种,你也可以把addremove方法留空,以便在事件中静默地忽略订阅。

最好的解决scheme是重构代码,如果可能的话,可能会将事件声明提交给实现者。

作为最后的手段,你也可以像这样禁用警告

 #pragma warning disable 67 public event RoutedEventHandler SearchClick; #pragma warning restore 67 

编译器显然不知道它在XAML代码中被使用。 尝试在您的事件定义中禁止警告。

另外,确保你确实在某个地方举办活动。

或者您可以将<NoWarn>67</NoWarn>到您的项目中

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <NoWarn>67</NoWarn> </PropertyGroup> 

你可以禁止个别的警告。

 \Program.cs(13,20): warning CS0219: The variable 'foo' is assigned but its value is never used 

在这种情况下,CS0219是有关variables被分配但未被使用的警告。 您可以使用/ nowarn:0219标志,或者在项目的属性窗格中添加错误编号(在“构build”下,请记住删除前导CS)。 请记住这个class级的所有警告。