2009-03-12 5 views
5

Я написал это - очень простую функцию, а затем задался вопросом, есть ли у VB некоторые встроенные функции для этого, но не смог найти ничего конкретного.VB.Net Инициализация массива на лету

Private Shared Function MakeArray(Of T)(ByVal ParamArray args() As T) As T() 
    Return args 
End Function 

Не так много, чтобы использовать как

Dim someNames() as string = MakeArray("Hans", "Luke", "Lia") 

Потому что это может быть сделано с

Dim someNames() as string = {"Hans", "Luke", "Lia"} 

Но больше похоже

public sub PrintNames(names() as string) 
    // print each name 
End Sub 

PrintNames(MakeArray("Hans", "Luke", "Lia")) 

Любые идеи?

ответ

15

Любая причина не делать:

Dim someNames() as string = New String()("Han", "Luke", "Leia") 

Единственным отличием является тип логического вывода, насколько я могу судить.

Я только что проверил, и VB 9 имеет implicitly typed arrays также:

Dim someNames() as string = { "Han", "Luke", "Leia" } 

(Это не будет работать в VB 8, насколько я знаю, но явная версия будет неявной версия необходима. для анонимных типов, которые также являются новыми для VB 9.)

+0

Отлично, первый пример именно то, что я искал. Благодарю. –

+2

Я думаю, мы все можем согласиться с тем, что самое важное здесь - правильное написание «Хан» :) – Andy

+0

@ Неверный, его порядок, в котором они появляются .... это должно быть «Люк», «Хан», а затем «Лея» .... потому что мы все знаем, что Хан и Лея более близки друг к другу и не разделены ее братом;) – GoldBishop

6
Dim somenames() As String = {"hello", "world"} 
1

Microsoft рекомендует следующий формат

Dim mixedTypes As Object() = New Object() {item1, item2, itemn} 

за http://msdn.microsoft.com/en-US/library/8k8021te(v=VS.80).aspx

Примечание, вы не должны указывать размер нового массива, как выводится из инициализирован подсчета арг. Если вы хотите указать длину, вы указываете не «длину», а индексный номер последнего пробела в массиве. то есть. Новый объект (2) {0, 1, 2} 'примечание 3 аргумента.

+0

Это явный формат декларации, предлагаемый MS. Подразумеваемый формат не имеет определенного класса и определяется. НО, если у вас есть опция «Option Explicit», тогда вы должны иметь 'Object', определенный в инструкции. – GoldBishop

Смежные вопросы