能够将参数传递给没有参数的函数

Ben*_*enM 4 vb.net parameters compiler-errors function

我目前正在使用VB.NET,我遇到了一个问题.这是我的班级:

Public class foo

    Private _bar As Integer
    Private _name As String

    Public Sub New(bar As Integer)
        Me._bar = bar
        Me._name = getName(bar) '//Passing in an argument where it is not needed
    End Sub

    Private Function getName() As String

        '//Get name from database using _bar as a lookup(it's essentially a primary key)
        '//Name is obtained successfully (checked when debugging)
        '//Return name

    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

尽管传入一个没有参数的getName参数,我仍能运行此代码.但是,当我运行它时,Me._name字段总是以一个空字符串结束(不是因为它最初开始时为空值)但我知道该getName方法返回正确的字符串,因为我在调试期间检查了它.如果我删除不需要的参数,那么它按预期工作,Me._name获取返回的值.

为什么我能够在不存在错误列表的情况下传递参数而不会出现任何错误?我在同事的计算机上尝试了这个,他们得到了"太多的参数"错误.

eka*_*kad 6

我们可以在VB.NET中调用带或不带括号的函数/ sub,所以这个

getName(bar)
Run Code Online (Sandbox Code Playgroud)

实际上与此相同

getName()(bar)
Run Code Online (Sandbox Code Playgroud)

这就是没有错误的原因.

此外,getName(bar)不会bar作为参数传递给getName函数,但它将返回返回(bar+1)th值的字符getName().

例如,如果我们将getName功能更改为此

Private Function getName() As String
    Return "test"
End Function
Run Code Online (Sandbox Code Playgroud)

然后getName(1)将是相同的getName()(1),它将返回第二个字符"test",即"e".