vb.net – 创建数组时何时需要使用`New`关键字?

前端之家收集整理的这篇文章主要介绍了vb.net – 创建数组时何时需要使用`New`关键字?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只是在VB中查看 help页面的数组,显然所有这些都是创建数组的可接受语法:
Dim numbers(4) As Integer 

inquiriesByYearMonthDay = New Byte(20)()() {}

Dim sales()() As Double = New Double(11)() {}

请注意,第一个关键字甚至没有New关键字,第二个关键字只有New关键字,第三个关键字同时使用Dim和New关键字.为什么会有这么多的不一致,你应该使用哪一个?我对第一个感到最好奇,因为数组对象从未被创建过

实际上,只创建了第一个数组并准备使用.其他只是声明为数组(或部分创建).
Dim numbers(4) As Integer
Dim sales()() As Double = New Double(11)() {}

正如Intellisense所示,数字已经可以使用了.对于锯齿状阵列销售 – 一组数组 – 到目前为止,代码已经告诉它将保留多少个数组.其中每个都是Nothing因为代码没有创建或分配给任何插槽:

声明销售的线实际上做了两件令人困惑的事情.它本可以这样声明:

' at some point I will want an array of array of doubles named sales:
Dim sales()() As Double

' Ok,I need it to hold 12 double arrays:
sales =  New Double(11)() {}

第一步声明变量和类型.步骤2通过创建临时数组并分配它来定义“容器数组”. (该链接试图通过queriesByYearMonthDay来说明这一点 – 它在前面的块中声明.)

销售仍然没有准备好使用,它只是一堆没什么.

' Ok,I need the first array to hold 5 elements
sales(0) = New Double(4) {}       ' 0 based,so 4 == 5 items
sales(0)(0) = 12.67               ' FINALLY we can use it

现在,sales(0)(0到4)可以存储数据. sales(1)()和其余部分尚未初始化.

新的并不是真正直接对销售采取行动.它正在创建一个新的临时数组(在右侧),它立即分配给左侧sales()中的一个插槽.

关键是:当给定大小时,阵列可以使用.所以,这些在功能上是相同的:

' create int array with 5 slots:
Dim numbers(4) As Integer
' declare array; assign empty 4 slot int array to it:
Dim numbers() As Int32 = New Int32(4) {}

第一份声明包括大小;第二个为它指定一个指定大小的(新)临时数组.也就是说,VB可以推断出大小:

昏暗的鱼类As String()= {“cod”,“salmon”,“tuna”,“perch”,“barracuda”}

{…}是另一个临时数组,VB指定给’鱼’.

但阵列只是笨重.销售额(6,3)代表什么?为了使它们可读,你需要在任何地方使用常量:foo = sales(SALES_MARCH,SALES_ZIGGY).就个人而言,我认为唯一好的数组是一个具有已知固定值的静态数组:

Dim Days As String() = {"sun","mon","tues"....}

否则,List(Of T),Dictionary(TK,TV),Collection(Of T)和许多其他人更容易使用,创建,管理和使用(他们自己的大小!)

猜你在找的VB相关文章