来自C#......
我在看这个网站
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
注意到它说
public static void Main(string[] args) {
相当于
Overloads Shared Sub Main(ByVal args() As String)
那么......什么是“超载”呢?
答案 0 :(得分:3)
这是一个错误,没有任何东西超载。在任何地方都没有预先烘焙的Sub Main(),尤其是在名为HelloWorld的类中。它恰好起作用,因为vb.net编译器不是很挑剔。将此代码粘贴到类中以便自己查看:
Class Test
Overloads Sub IdontOverloadAnything()
End Sub
End Class
VB.NET编译器倾向于让魔术发生。这不是其中一种情况,Main()魔法在CLR中。大多数C#程序员都会认为这是该语言中的错误。我不能不同意。
答案 1 :(得分:2)
因为标准的Sub Main没有参数,所以你使用带参数的新Main过程overloading。
答案 2 :(得分:0)
在VB6中,与大多数“古代”编程语言一样,有一句格言“只能有一个!” (见电影“汉兰达”)。在模块或类中只能有一个具有相同名称的Function或Sub。在VB.NET中,就像在C#中一样,只要它们具有不同的签名,就可以有几个具有相同名称的方法。这意味着它们需要具有不同数量的参数或不同类型的参数。然后说这些功能过载。在VB中,您可以将可选关键字Overloads
添加到此类函数或Subs。
Public Sub Test(s As String)
Public Sub Test(i As Integer)
Public Sub Test(s As String, i As Integer)
这没关系。然而
Public Sub Test(t As String)
不会,因为已经有一个带有一个字符串参数的重载方法。不同的参数名称是不够的。
答案 3 :(得分:0)
因为有一个标准的Shared Sub Main而你正在超载它。你可以省略重载。