I know that you can easily pass an array to a function, like the code below shows
Private Sub SomeFunction(ByVal PassedArray() As String)
For i As Intege
SomeFunction({"some", "array", "member"}) ' this obviously gives a syntax error
This is a perfectly valid syntax starting with VB10 (Visual Studio 2010). See this:
No; there is no such thing as a constant array in CLI; arrays are always mutable. Perhaps a ReadOnlyCollection<T> would be suitable?
In C# (so presumably similar in VB) you can do something like:
private readonly static ReadOnlyCollection<string> fixedStrings
= new ReadOnlyCollection<string>(
new string[] { "apple", "banana", "tomato", "orange" });
Which gives you a static (=shared) non-editable, re-usable collection. This works especially well if the method accepts IList<T>
, IEnumerable<T>
, etc (rather than an array, T[]
).
The closest you can do is:
SomeFunction(New String() {"some", "array", "members"})
This is actually identical in terms of objects created to what you posted. There aren't actually array literals in .NET, just helpers for initialization.
Another thing I just thought of that doesn't directly answer the question, but perhaps gets at the poster's intent - the ParamArray keyword. If you control the function you are calling into, this can make life a whole lot easier.
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")