如何抑制VS2005(VB.Net)中特定函数的编译器警告

问题描述 投票:0回答:6

我有一个从基类继承并实现以下内容的类...

    Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

现在它继承的基类也实现了这个 System.IComparable.CompareTo 所以我收到以下编译器警告:

警告:“System.IComparable.CompareTo”已由基类实现。重新实现假定的功能。

我对此很满意,所以我的问题是如何仅针对此功能抑制此警告(即并非所有此类警告)。

澄清:

  • 这里是 MSDN 上错误的链接
  • 我已经尝试过“阴影”和“覆盖”,但都没有消除警告。
  • 警告不在方法本身上(除非省略了 Shadows 或 Overrides),而是专门针对“Implements System.IComparable.CompareTo”。
  • 我不想抑制所有此类警告(如果它们突然出现),只是这个。

解决方案:
我希望使用 System.Diagnostics.CodeAnalysis.SuppressMessage 属性或类似 C# 的 #pragma 的属性,但看起来没有办法抑制单行的警告。 不过,有一种方法可以关闭该项目的此消息,而无需关闭所有警告。

我手动编辑了 .vbproj 文件,并将 42015 包含在节点中以进行 Debug 和 Release 编译。 不太理想,但比总是在 IDE 中看到警告要好。

如果有人有更好的解决方案,请添加它,我很乐意尝试标记答案。

vb.net visual-studio-2005 compiler-warnings
6个回答
9
投票

仅在基类中使用“Implements”:

基类中的签名:

Public Overridable Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

继承类中的签名:

Public Overrides Function CompareTo(ByVal obj As Object) As Integer

1
投票

您可以使用抑制警告来抑制一个警告。请参阅此处了解如何操作的更多。 您还可以使用 SuppressMessage 属性


0
投票

如果您无权访问基类,因此无法使该方法可重写,您可以将

<NoWarn>42015</NoWarn>
添加到项目文件中。


-1
投票

将关键字 Shadows 添加到函数定义中。

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

-1
投票

与其抑制警告,不如修复它?假设基础是可重写的,

Public Overrides Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

如果没有,那就阴影它,

Public Shadows Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

(我认为这是正确的,我是一个C#程序员。如果不对,请评论,我会更新。)


-1
投票

在项目的属性上,转到构建选项卡并使用抑制警告文本框。

© www.soinside.com 2019 - 2024. All rights reserved.