VB.NET Пустой Строковый массив
Вопрос
Как я могу создать пустой одномерный массив строк?
Решение
Dim strEmpty(-1) В виде строки
Другие советы
VB - это 0-индексируется в объявлениях массива, итак , что - то вроде Dim myArray(10) as String
дает вам 11 элементы.Это распространенная ошибка при переводе с языков Си.
Итак, для пустого массива будет работать любое из следующих действий:
Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty
Вам не нужно включать строку дважды, и вам не нужно использовать New .
Сработает любое из следующих действий...
Dim strings() as String = {}
Dim strings as String() = {}
Массив, который вы создали с помощью Dim s(0) As String
НЕ ПУСТУЕТ
В VB.Net нижний индекс, который вы используете в массиве, является индексом последнего элемента.VB.Net по умолчанию индексация начинается с 0, так что у вас есть массив, в котором уже есть один элемент.
Вместо этого вам следует попробовать использовать System.Collections.Specialized.StringCollection
или (еще лучше) System.Collections.Generic.List(Of String)
.Они представляют собой практически то же самое, что и массив string, за исключением того, что они намного удобнее для добавления и удаления элементов.И давайте будем честны:вы редко будете создавать пустой массив строк без желания добавлять по крайней мере один из элементов этого.
Если вам действительно нужен пустой массив строк, объявите его следующим образом:
Dim s As String()
или
Dim t() As String
Что -то вроде:
Dim myArray(9) as String
Это дало бы вам массив из 10 строковых ссылок (каждая из которых ни на что не указывает).
Если вы не уверены в размере во время объявления, вы можете объявить массив строк следующим образом:
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()
@Отметить
Спасибо за исправление.
Другой способ сделать это:
Dim strings() As String = {}
Проверка того, что это пустой строковый массив:
MessageBox.Show("count: " + strings.Count.ToString)
Отобразится окно с сообщением "count:0".
Немного многословно, но самодокументируемо...
Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray
Не уверен, зачем вам это нужно, но способ C # был бы следующим
string[] newArray = new string[0];
Я предполагаю, что VB не будет слишком отличаться от этого.
Если вы создаете пустой массив, чтобы позже заполнить его значениями, вам действительно следует рассмотреть возможность использования
List<string>
и преобразуйте его в массив (если он вам действительно нужен как массив) с помощью
newListOfString.ToArray();
попробуйте это Затемнить Arraystr() в виде строки ={}