是否在VB.Net中需要'Overloads'关键字?

时间:2010-10-27 21:54:48

标签: vb.net overloading

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

5 个答案:

答案 0 :(得分:5)

不,这不是必要的。您可以在不使用Overloads关键字的情况下重载方法和属性。

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

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

答案 1 :(得分:2)

只有一种情况是关键字Overloads是必需的。如果某个方法包含关键字Overloads,则该类型中任何同名的新方法也必须包含Overloads

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

答案 2 :(得分:1)

您不必使用Overloads关键字在同一个类中指定重载方法。这就是C#处理重载的方式 - C#中没有Overloads关键字 但是使用Overloads关键字往往更具可读性 查看this blog post了解更多详细信息。

答案 3 :(得分:0)

为了准确起见,我做了这么晚的回复,因为我注意到现有的答案是不正确的。在某些情况下肯定需要'Overloads',最常见的是当另一个同名方法覆盖基类方法时,如下例所示 - 如果删除'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

答案 4 :(得分:0)

奇怪的是,有些时候无法使用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'模块中的关键字"。

不确定原因,因为您仍然可以像往常一样重载方法。