如何用n元素创建一个双数组?

时间:2015-01-20 14:55:48

标签: arrays vb.net

在vb.net中,我可以这样做

Dim addition = {0.0, 0.0, 0.0}

此处,{0.0,0.0,0.0}是具有3个元素的double数组。

如果我想要一个可变数量的元素怎么样?假设elNum包含数组中元素的数量,我想要一个double数组,初始化为0.0,带有elNum元素数。

这样做的方法是Dim addition(elNum) as double.

那很尴尬。还有另一种方法吗?什么作为表达而不仅仅是宣言?

我正在寻找更优雅的东西。

这样的东西

arraydouble(n)其中arraydouble是一个赋予参数的函数会产生一个双初始化为0的数组

我想知道是否存在一些简单且内置的东西。

2 个答案:

答案 0 :(得分:2)

在调整数组大小以容纳更多或更少的数据时,数组开始时不是很优雅。

List完全避免了这个问题,并提供了一种存储类型化数据(int,bool甚至是类对象)的方法。大小是内部管理的,因此它会根据需要增长。

Private addList As New List(Of Double)   

添加值:

addList.Add(0.0)
addList.Add(1.23)
addList.Add(3.14)

如果3结果不够,只需添加更多。像数组一样引用它们:

For n As Integer = 0 to addList.Count-1
    Console.WriteLine(addList(n).ToString())
Next n
' or:
For Each d As Double in addList
    Console.WriteLine(d.ToString())
Next

删除元素(考虑使用数组执行此操作所需的代码):

addList.RemoveAt(1)      ' remove 1.23

您还可以对它们进行广泛的排序,随机化,转换和查询。例如,如果其他东西绝对必须以数组形式提供此数据,则可以使用addList.ToArray()

答案 1 :(得分:1)

如果您想保留值,可以使用ReDimReDim Preserve

Dim x

ReDim x(5)
    x(5) = "test"
    MsgBox UBound(x)
    MsgBox x(UBound(x))

elNum = 6

ReDim Preserve x(elNum)
    x(6) = "test2"
    MsgBox x(5)
    MsgBox UBound(x)
    MsgBox x(UBound(x))