空の 1 次元文字列配列を作成するにはどうすればよいですか?
10 に答える
VB は配列宣言で 0-indexed であるため、seomthing likeで11個の要素Dim myArray(10) as String
が得られます。これは、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
Dim strEmpty(-1) As String
IS NOT EMPTYで作成した配列Dim s(0) As String
VB.Net では、配列で使用する添字は最後の要素のインデックスです。VB.Net はデフォルトでインデックスを 0 から開始するため、配列には既に 1 つの要素があります。
代わりにSystem.Collections.Specialized.StringCollection
or (さらに良い)を使用してみてくださいSystem.Collections.Generic.List(Of String)
。これらは、アイテムの追加と削除に適していることを除いて、文字列の配列とほとんど同じです。正直に言って、少なくとも1 つの要素を追加したくない空の文字列配列を作成することはめったにありません。
本当に空の文字列配列が必要な場合は、次のように宣言します。
Dim s As String()
また
Dim t() As String
String を 2 回含める必要はなく、New を使用する必要もありません。
次のいずれかが機能します...
Dim strings() as String = {}
Dim strings as String() = {}
何かのようなもの:
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()
@マーク
訂正ありがとうございます。
これを行う別の方法:
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();