C#到VB.NET数组初始化

rau*_*and 4 c# vb.net arrays

在C#中,我可以像这样声明一个数组变量

object[] Parameters;
Run Code Online (Sandbox Code Playgroud)

并像这样初始化它:

Parameters = new object[20];
Run Code Online (Sandbox Code Playgroud)

在Visual Basic中,声明和初始化数组很简单:

Dim Parameters(19) As Object
Dim Parameters As Object(19)    ' Alternative syntax
Run Code Online (Sandbox Code Playgroud)

我如何初始化VB.NET中声明的数组变量?

Parameters = New Object(19) 不起作用.


例如,我如何将以下内容翻译成VB.NET?

int value = 20;
object[] Parameters;
if (value > 10)
{
    Parameters = new Object[20];
}
Run Code Online (Sandbox Code Playgroud)

Hei*_*nzi 7

基本上与其他Visual Basic代码相同,但我会利用这个机会添加一些样式:

Dim value = 20                ' Type inference, like "var" in C#
Dim parameters() As Object    ' Could also be "parameters As Object()"
If value > 10 Then
    parameters = New Object(19) {}   ' That's right, Visual Basic uses the maximum index
End If                               ' instead of the number of elements.
Run Code Online (Sandbox Code Playgroud)

局部变量(parameters)应以小写字母开头.这是一个既定的约定,它有助于在Stack Overflow中获得正确的语法高亮(这也适用于原始的C#代码).

那么,为什么{}Visual Basic中需要括号?在Visual Basic中,方法调用和数组访问都使用括号(...).因此,New X(4)可能意味着:

  • 创建一个新的类型对象X并传递4给构造函数,
  • 创建一个5元素的[sic]数组X.

要区分这两种情况,请在第二种情况下使用数组初始化程序语法.通常,大括号包含实际值:

myArray = New Integer() {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)


小智 6

Dim value As Integer = 20
Dim Parameters() as object
If value > 10 then
  Parameters = new Object(value - 1){}
end if
Run Code Online (Sandbox Code Playgroud)