代码之家  ›  专栏  ›  技术社区  ›  James Hulse

“overloads”关键字在vb.net中是否是必需的?

  •  1
  • James Hulse  · 技术社区  · 14 年前

    正如标题所说。从我在网上看到的 过载 关键字是可选的,但有没有必要的时候?在模块中使用时,它甚至似乎是一个错误。

    5 回复  |  直到 7 年前
        1
  •  5
  •   Patrick McDonald    9 年前

    不,没必要。您可以重载方法和属性,而不需要 Overloads 关键字。

    但是,如果使用 过载 Overrides 关键字在方法的一个重载上,必须在类中该方法的所有其他重载上使用它。

    您可以使用 过载 关键字而不是 Shadows 关键字来隐藏具有相同签名的继承方法。然后你必须使用其中一个关键字,它们不是都是可选的。

        2
  •  2
  •   JaredPar    14 年前

    只有一种情况下关键字 Overloads 是强制性的。如果一个方法有关键字 过载 那么,类型中任何同名的新方法也必须具有 过载

    除此之外,关键字是可选的。

        3
  •  1
  •   Kamyar    14 年前

    您不必在同一类中使用overloads关键字来指定重载方法。这就是C处理重载的方式C中没有overloads关键字。
    但使用overloads关键字,往往更容易阅读。
    退房 this blog post 更多详细信息。

        4
  •  0
  •   Dave Doknjas    9 年前

    为了准确起见,我的回答非常晚,因为我注意到现有答案根本不正确。在某些情况下,确实需要重载,最常见的情况是,当同名的另一个方法重写基类方法时,如下面的示例所示-如果删除“overloads”关键字,代码将不会编译:

    Public Class One
        Public Overridable Sub method()
        End Sub
    End Class
    Public Class Two
        Inherits One
    
        Public Overrides Sub method()
        End Sub
    
        Public Overloads Sub method(ByVal i As Integer)
        End Sub
    End Class
    
        5
  •  0
  •   SteveCinq    7 年前

    奇怪的是,有时候你 不能 使用 Overloads 关键字。例如:

    Module MyModule
        Overloads Sub MySub(Param1 As String)
        End Sub
        Overloads Sub MySub(Param1 As String, Param2 As Integer)
        End Sub
    End Module
    

    编译器抛出错误,“模块中不适当地使用‘overloads’关键字”。

    不知道为什么,因为您仍然可以像往常一样重载方法。