有没有办法让我在不先声明的情况下对变量的新实例进行函数调用?
因此,例如在 Java 中,您可以执行以下操作:
new foo().bar(parameters);
Run Code Online (Sandbox Code Playgroud)
我在 Visual Basic 中尝试过类似的东西,但这是一个语法错误。目前我正在创建一个变量,然后运行该函数。
dim instance as new foo()
instance.bar(parameters)
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的类似于上面的 Java 代码吗?
不完全是。您可以通过将实例化括在括号中来在更大的表达式中执行此操作,例如:
MessageBox.Show((New String("y"c, 1)).ToUpper())
Run Code Online (Sandbox Code Playgroud)
或者,事实上,虽然我觉得它更令人困惑,但您实际上甚至不需要实例化周围的括号:
MessageBox.Show(New String("y"c, 1).ToUpper())
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想调用这样的方法,我所知道的唯一方法是将其包裹在CType运算符中。例如,如果你有一个这样的类:
Private Class Test
Public Sub Show()
MessageBox.Show("Hello")
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
你可以这样调用Show方法:
CType(New Test(), Test).Show()
Run Code Online (Sandbox Code Playgroud)
但是,它有点笨拙。
实际上,自从我昨天发布这个以来,SSS 提供了一个更好的答案。CType您可以使用Call关键字而不是将其包装在运算符中。例如:
Call New Test().Show()
Run Code Online (Sandbox Code Playgroud)