如何在VB.NET中将数组设置为值列表?

3
我不知道如何将一个数组设置为两组数字中的一组(以后还会有更多),我尝试过的每种方法都会出现某种错误。我尝试在case语句内定义数组,但是这样我就无法在For Each语句中使用该数组,这使得它毫无用处... 任何想法都将不胜感激。
代码:
Dim HourArray() As Integer

Select Case CurrentShapeRow(ROW_PERIOD)
    Case "ON", "2X16"
        HourArray = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21}
    Case "2X8", "5X8"
        HourArray = {0, 1, 2, 3, 4, 5, 22, 23}
    Case Else
        Throw New Exception(String.Format("Unhandled Period: {0}", CurrentShapeRow(ROW_PERIOD)))
End Select


For Each HourCount As Integer In HourArray()
     'DO SOME STUFF HERE
Next
3个回答

5
HourArray = New Integer() {1,2,3,4,5,6,7,8,9}

4

当你将一个数组赋值给一个已存在的变量时,必须显式地使用一个构造函数:

HourArray = New Integer() { 6, 7, 8, 9, 10, 11, 12, 13 }

这与声明和赋值不同,其中构造函数是可选的:

Dim HourArray() As Integer = { 6, 7, 8, 9, 10, 11, 12, 13 }

谢谢你们俩,那行了,我觉得这是一些非常简单的东西,只是我的大脑今天不愿意做。给马克和本一个赞,并在允许时接受马克的回答,仅因为他先回答了。 - RiddlerDev
@IPX Ares:实际上,我想我很不幸是第二名。 - Mark Byers

2
    Dim hourArray As List(Of Integer)

    Select Case CurrentShapeRow(ROW_PERIOD)
        Case "ON", "2X16"
            hourArray.AddRange(New Integer() {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21})
        Case "2X8", "5X8"
            hourArray.AddRange(New Integer() {0, 1, 2, 3, 4, 5, 22, 23})
        Case Else
            Throw New Exception(String.Format("Unhandled Period: {0}", CurrentShapeRow(ROW_PERIOD)))
    End Select

For Each i As Integer In hourArray
    Console.WriteLine(i)
Next

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接