Подтвердить что ты не робот

Пустой массив строк VB.NET

Как создать пустой одномерный массив строк?

4b9b3361

Ответ 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