正如标题所说。从我在网上看到的 Overloads 关键字是可选的,但是有必要吗?在模块中使用时,它甚至似乎是一个错误。
答案 0 :(得分:5)
不,这不是必要的。您可以在不使用Overloads
关键字的情况下重载方法和属性。
但是,如果在方法的一次重载上使用Overloads
或Overrides
关键字,则必须在类的该方法的所有其他重载上使用它。
您可以使用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'模块中的关键字"。
不确定原因,因为您仍然可以像往常一样重载方法。