如何在VS2005(VB.Net)中禁止特定功能的编译器警告

时间:2008-11-07 18:33:22

标签: vb.net visual-studio-2005 compiler-construction

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

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

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

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

我很好,所以我的问题是如何才能为这个功能抑制这个警告(即不是所有这些警告)。

澄清:

  • 这是MSDN上的错误的link
  • 我已经尝试了Shadows和Overrides,但都没有消除警告。
  • 警告不在方法本身上(除非省略Shadows或Overrides),而是专门用于“Implements System.IComparable.CompareTo”。
  • 我不打算压制所有类型的警告(如果它们突然出现),只是这个。

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

我手动编辑了.vbproj文件,并在节点中包含42015用于调试和发布编译。不理想,但总比在IDE中看到警告要好。

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

6 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用supress警告来抑制一个警告。请参阅此处了解more如何获取。 您也可以使用SuppressMessage Attribute

答案 2 :(得分:0)

如果您无权访问基类,因此无法使方法成为可覆盖,则可以将<NoWarn>42015</NoWarn>添加到项目文件中。

答案 3 :(得分:-1)

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

答案 4 :(得分:-1)

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

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

答案 5 :(得分:-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#程序员。如果没有,请发表评论,我会更新。)