为什么Main方法在VB中有'Overloads'这个词?

时间:2011-08-13 16:05:04

标签: vb.net keyword main

来自C#......

我在看这个网站

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

注意到它说

public static void Main(string[] args) {

相当于

Overloads Shared Sub Main(ByVal args() As String) 

那么......什么是“超载”呢?

4 个答案:

答案 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而你正在超载它。你可以省略重载。