在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的数组
我想知道是否存在一些简单且内置的东西。
答案 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)
如果您想保留值,可以使用ReDim
或ReDim 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))