Вопрос

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

Это было полезно?

Решение

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() в виде строки ={}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top