2016-01-19 1 views
1

Я задавался в течение длительного времени, что (если таковые имеются) разница находится между следующее:туЗЬптд() или As String()

Dim myString() as String 

и

Dim myString as String() 
+1

Честно говоря, *** ничего *** ... Каждый путь все еще инициализирует/выделяет переменную как 'String Array' ... – Codexer

+1

Как уже не отмечено ничего. Я использую Dim varName As String(), так как я перемещаюсь между C# и vb.net, где в C# у нас есть строка [] varName. Итак, для вас это личное предпочтение –

+0

Второй способ - это единственный способ сделать это в старых версиях VB, но с внедрением дженериков, некоторые вещи могут быть больше не такими, чтобы они создали возможность сделать это первым способом , Но они оставили второй способ обратной совместимости. Я предлагаю использовать первый способ всегда, если они решат удалить второй способ. (Это моя догадка) – Steve

ответ

1

Существует нет разница. Оба инициализируют переменную массиву String, равным Nothing. Вы обнаружите, что в VB может быть более одного способа сделать то же самое. Тем не менее, Microsoft's VB Coding Conventions это сказать о массивах:

Поместите обозначение массива на типе, а не переменной. Например, используйте следующий синтаксис:

Dim letters4 As String() = {"a", "b", "c"} 

Не используйте следующий синтаксис:

Dim letters3() As String 

Есть некоторые различия между этими двумя синтаксисами, которые я попытаюсь подвести итог. Первый - фактический синтаксис VB для объявления массива с размером, но этот аргумент является необязательным.

'Declare a single-dimension array of 5 values 
Dim numbers(4) As Integer 

'Declare a multi-dimensional array 
Dim matrix(5, 5) As Double 

Вы не можете использовать второй синтаксис с размером, однако:

Dim numbers as Integer(4) 
'Compiler error: Array bounds cannot appear in type specifiers 

Но вы можете с new оператора и инициализатором!

'Also an empty array with capacity for 5 values 
Dim numbers as Integer() = new Integer(4) { } 

Что приводит нас ко второму синтаксисом: используется, когда мы хотим объявить и заполнить массив с начальными значениями (т.е. литерал массива)

Dim values As Double() = {1, 2, 3, 4, 5, 6} 

В вашей второй case, вы просто пропустили массив литерала и, следовательно, вы получите выражение, эквивалентное первому.

Arrays in Visual Basic в MSDN.

+1

Вы можете процитировать MSDN [Соглашения по кодированию Visual Basic] (https://msdn.microsoft.com/en-us/library/h63fsef3.aspx), в которых говорится: «Поместите указатель массива на тип, а не на переменная «. –

+0

Привет, я отредактирую, чтобы включить ссылку, которую вы предоставили. – ardila