53

如何创建一个空的一维字符串数组?

4

10 回答 10

44

VB在数组声明中是 0-indexed,所以 seomthing likeDim 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
于 2008-09-04T21:27:01.763 回答
39

暗淡 strEmpty(-1) 作为字符串

于 2008-09-04T20:41:56.923 回答
9

您创建的数组Dim s(0) As String IS NOT EMPTY

在 VB.Net 中,您在数组中使用的下标是最后一个元素的索引。VB.Net 默认从 0 开始索引,所以你有一个已经有一个元素的数组。

您应该尝试使用System.Collections.Specialized.StringCollectionor (甚至更好) System.Collections.Generic.List(Of String)。它们与字符串数组几乎相同,只是它们更适合添加和删除项目。老实说:您很少会创建一个字符串数组而不希望向其中添加至少一个元素。

如果您真的想要一个空字符串数组,请像这样声明它:

Dim s As String()

或者

Dim t() As String
于 2008-09-04T21:25:37.100 回答
8

就像是:

Dim myArray(9) as String

会给你一个包含 10 个字符串引用的数组(每个都指向 Nothing)。

如果您在声明时不确定大小,可以像这样声明一个 String 数组:

Dim myArray() as String

然后你可以稍后将它指向一个适当大小的字符串数组:

ReDim myArray(9) as String

如果您不知道总大小并且需要动态填充它,ZombieSheep 使用 List 是正确的。在 VB.NET 中,这将是:

Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")

然后从该列表中获取一个数组:

myList.ToArray()

@标记

感谢您的指正。

于 2008-09-04T20:41:34.477 回答
8

您不必包含两次 String,也不必使用 New。
以下任何一项都可以工作...

Dim strings() as String = {}
Dim strings as String() = {}
于 2015-01-28T14:52:40.787 回答
4

另一种方法:

Dim strings() As String = {}

测试它是一个空字符串数组:

MessageBox.Show("count: " + strings.Count.ToString)

将显示一个消息框,上面写着“count: 0”。

于 2014-11-13T13:51:14.573 回答
2

有点冗长,但自我记录......

Dim strEmpty() As String = Enumerable.Empty(Of String).ToArray
于 2018-08-03T18:21:52.250 回答
1

不知道你为什么想要,但 C# 方式是

string[] newArray = new string[0];

我猜VB不会和这个有太大的不同。

如果您正在构建一个空数组以便稍后用值填充它,您真的应该考虑使用

List<string>

并将其转换为一个数组(如果你真的需要它作为一个数组)

newListOfString.ToArray();
于 2008-09-04T20:38:30.333 回答
1

暗淡数组 As String() = Array.Empty(Of String)

于 2019-12-12T18:39:04.857 回答
0

试试这个 Dim Arraystr() as String ={}

于 2018-04-12T11:59:06.220 回答