VS 建议重写阴影函数,但拒绝接受 Overrides 声明.我该如何解决这个问题



在我的Windows Forms Control Library项目中,是一个用户控件和一个由所述用户控件使用的类。

用户控件,就我的理解而言,与我的问题无关。只是为了完整起见:它继承自UserControl,如Designer.vb中所述:

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class UFB
    Inherits System.Windows.Forms.UserControl
    ...
End Class

类是我有问题的部分。在其中,我想实现IEquatable接口:

Public Class CPT
    Implements IEquatable(Of CPT)
    ...
    Public Function Equals(oOther As CPT) As Boolean _
        Implements IEquatable(Of CPT).Equals
        ...
    End Function
End Class

但是,VS 抱怨函数"等于"隐藏了基类"对象"中的可重写方法。若要重写基方法,必须将此方法声明为"重写"。

"好的",

我说,"我们开始了":

    Public Overrides Function Equals(oOther As CPT) As Boolean _
        Implements IEquatable(Of CPT).Equals
        ...
    End Function

但是现在VS抱怨说,函数"等于"不能声明为"覆盖",因为它不会覆盖基类中的函数。

那么,正确的方法是什么呢?

你应该使用 Overloads 关键字:

Public Class CPT
    Implements IEquatable(Of CPT)
    ...
    Public Overloads Function Equals(oOther As CPT) As Boolean _
        Implements IEquatable(Of CPT).Equals
        ...
    End Function
End Class
当两个重载都在同一类型中声明时,不需要

该关键字,但是当您重载在基类型中声明的方法时,您需要显式。 现在,您有两种具有不同签名的Equals方法,这就是您想要的。

最新更新