VB.NET Matriz de Seqüência de caracteres Vazia
Pergunta
Como posso criar um vazio unidimensional matriz de seqüência de caracteres?
Solução
Dim strEmpty(-1) as String
Outras dicas
O VB é 0 indexadas no declarações de matriz, assim como seomthing Dim myArray(10) as String
dá-lhe 11 elementos.É um erro comum quando a tradução de idiomas C.
Assim, para uma matriz vazia, o seguinte seria de trabalho:
Dim str(-1) as String ' -1 + 1 = 0, so this has 0 elements
Dim str() as String = New String() { } ' implicit size, initialized to empty
Você não precisa incluir Cadeia duas vezes, e você não precisa usar Novo.
Um dos seguintes irá funcionar...
Dim strings() as String = {}
Dim strings as String() = {}
A matriz criada por Dim s(0) As String
NÃO É VAZIO
No VB.Net o subscrito você usar na matriz é o índice do último elemento.VB.Net por padrão começa a indexação em 0, então você tem uma matriz que já tem um elemento.
Você deve, em vez disso tente usar System.Collections.Specialized.StringCollection
ou (melhor ainda) System.Collections.Generic.List(Of String)
.São praticamente a mesma coisa como uma matriz de seqüência de caracteres, exceto que eles estão cargas melhor para adição e remoção de itens.E vamos ser honestos:você raramente vai criar um vazio matriz de seqüência de caracteres sem querer adicionar pelo menos um elemento a ele.
Se você realmente quer uma cadeia de caracteres vazia matriz, declará-lo como este:
Dim s As String()
ou
Dim t() As String
Algo como:
Dim myArray(9) as String
Dar-lhe-ia uma matriz de 10 Cadeia de referências (cada um apontando para o Nada).
Se não tem a certeza do tamanho na declaração de tempo, você pode declarar uma matriz de Seqüência de caracteres como este:
Dim myArray() as String
E, em seguida, você pode apontá-lo para um tamanho de matriz de Seqüências de caracteres mais tarde:
ReDim myArray(9) as String
ZombieSheep é direito sobre o uso de uma Lista, se você não sabe o tamanho total e o que você precisa para preencher dinamicamente ele.No VB.NET que seria:
Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")
E, em seguida, para obter uma matriz a partir de uma Lista:
myList.ToArray()
@Marcos
Obrigado pela correção.
Outra maneira de fazer isso:
Dim strings() As String = {}
Teste que é uma cadeia de caracteres vazia matriz:
MessageBox.Show("count: " + strings.Count.ToString)
Irá mostrar uma caixa de mensagem dizendo "contagem:0".
Um pouco detalhado, mas a auto documentar...
Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray
Não sei por que você iria querer, mas o C# forma seria
string[] newArray = new string[0];
Eu estou supondo que o VB não serão muito semelhantes a este.
Se você está construindo uma matriz vazia, então você pode preenchê-la com valores mais tarde, você realmente deve considerar o uso de
List<string>
e convertê-lo para uma matriz (se você realmente precisa dele como uma matriz) com
newListOfString.ToArray();
tente isso Dim Arraystr() as String ={}