将常量数组传递给VB.NET中的函数

Ger*_*ert 5 vb.net arrays constants

我知道您可以轻松地将数组传递给函数,如下面的代码所示

Private Sub SomeFunction(ByVal PassedArray() As String)
    For i As Integer = 0 To PassedArray.Count - 1
        Debug.WriteLine(PassedArray(i))
    Next
End Sub

Public Sub Test()
    Dim MyArray As String() = {"some", "array", "members"}

    SomeFunction(MyArray)
End Sub
Run Code Online (Sandbox Code Playgroud)

但是有没有办法将常量数组传递给VB.NET中的函数呢?

例如在PHP中,您可以编写:

function SomeFunction($array)
{
    for($i=0;$i<count($array);$i++)
    {
         echo($array[$i]);
    }
}

function Test()
{
    SomeFunction(array("some", "array", "members")); // Works for PHP
}
Run Code Online (Sandbox Code Playgroud)

所以重申一下:有没有办法将常量数组直接传递给VB.NET中的函数?这样做有什么好处吗?我想象可以节省几个字节的内存。

PS:

SomeFunction({"some", "array", "member"}) ' This obviously gives a syntax error
Run Code Online (Sandbox Code Playgroud)

Rya*_*ner 5

你能做的最接近的是:

SomeFunction(New String() {"some", "array", "members"})
Run Code Online (Sandbox Code Playgroud)

这实际上与您发布的创建的对象相同。.NET 中实际上并没有数组文字,只是用于初始化的帮助程序。


Rya*_*ner 3

我刚刚想到的另一件事并没有直接回答问题,但也许可以理解发布者的意图 - ParamArray 关键字。如果您控制所调用的函数,这可以使生活变得更加轻松。

Public Function MyFunction(ByVal ParamArray p as String())
   ' p is a normal array in here
End Function

' This is a valid call
MyFunction(New String() {"a", "b", "c", "d"})

' So is this
MyFunction("a", "b", "c", "d")
Run Code Online (Sandbox Code Playgroud)