Как создать пустой одномерный массив строк?
Пустой массив строк VB.NET
Ответ 1
Dim strEmpty (-1) As String
Ответ 2
VB 0-индексируется в объявлениях массива, поэтому seomthing like Dim myArray(10) as String
дает вам 11. Это распространенная ошибка при переводе с языков C.
Итак, для пустого массива будет работать одно из следующих:
Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty
Ответ 3
Что-то вроде:
Dim myArray(9) as String
Дает вам массив из 10 ссылок на String (каждый указывает на Nothing).
Если вы не уверены в размере во время объявления, вы можете объявить массив String следующим образом:
Dim myArray() as String
И затем вы можете указать его на размерный массив строк позже:
ReDim myArray(9) as String
ZombieSheep прав насчет использования списка, если вы не знаете общий размер, и вам нужно динамически его заполнять. В VB.NET это будет:
Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")
И затем, чтобы получить массив из этого списка:
myList.ToArray()
@Mark
Спасибо за исправление.
Ответ 4
Массив, созданный с помощью Dim s (0) As String НЕ ПОРОЖЕН
В VB.Net индекс, который вы используете в массиве, является индексом последнего элемента. VB.Net по умолчанию начинает индексирование в 0, поэтому у вас есть массив, у которого уже есть один элемент.
Вместо этого попробуйте использовать System.Collections.Specialized.StringCollection
или (еще лучше) System.Collections.Generic.List(Of String)
. Они составляют почти то же самое, что и массив строк, за исключением того, что они лучше загружаются для добавления и удаления элементов. И пусть честно: вы редко создаете пустой массив строк, не добавляя к нему по крайней мере один элемент.
Если вам действительно нужен пустой массив строк, объявите его следующим образом:
Dim s As String()
или
Dim t() As String
Ответ 5
Вам не нужно включать String дважды, и вам не нужно использовать New.
Будет выполнено одно из следующих действий:
Dim strings() as String = {}
Dim strings as String() = {}
Ответ 6
Другой способ сделать это:
Dim strings() As String = {}
Проверка того, что это пустой массив строк:
MessageBox.Show("count: " + strings.Count.ToString)
Появится окно с сообщением "count: 0".
Ответ 7
Не уверен, зачем вам это нужно, но способ С# будет
string[] newArray = new string[0];
Я предполагаю, что VB не будет слишком отличаться от этого.
Если вы создаете пустой массив, чтобы вы могли заполнить его значениями позже, вам действительно стоит рассмотреть возможность использования
List<string>
и преобразование его в массив (если вам действительно нужно как массив) с помощью
newListOfString.ToArray();
Ответ 8
FYI, будьте осторожны с ReDim
-ing
Это время от времени опасно. как goto