VB.NET 1D数组访问使用2个索引

时间:2014-01-08 18:33:35

标签: c# arrays vb.net

尝试将一些旧的VB.NET代码移植到C#,并遇到阵列索引的语法问题。

在VB方法中,名为Get_Coverage_Percentage,是一行代码如下:

 Dim RS_Activation_List = Get_Activation_List(Company_ID, Start_Date, End_Date, 0)

其中RS_Activation_List在方法Get_Activation_List中初始化为

 Dim Activation_List(ds.Tables(0).Rows.Count) As Activation_List

根据我目前对VB.NET语法的理解,上面转换为1D数组。 但是,稍后在Get_Coverage_Percentage中,是一行访问Activation_List数组,如下所示:

  RS_Prorated_Activation = FormatNumber(RS_Activation_List(RS_Sum_Activation, 5), 2)

如何使用2个索引访问1D数组? Activation_List本身是一个简单的结构,定义如下:

  Structure Activation_List
        Dim Mobile_ID As Integer
        Dim Radio_Address As Double
        Dim Activation_Date As Date
        Dim Pro_Rated_Fee As Integer
        Dim Sum_Pro_Rated_Fee As Integer
    End Structure

VB专业版,我在这看什么?

* 更新:* 方法* Get_Activation_List *看起来像这样,取出了一些部分:

 Public Function Iridium_Get_Activation_List(ByVal Company_ID, ByVal Start_Date, ByVal End_Date, ByVal Access_Fee) As Array
        Dim vNumOfDaysInMonth = Get_Number_Of_Day_In_Month(Start_Date)
        Dim SQL = "SELECT * from assMobileRadio;"

        Dim drDataRow As DataRow
        Dim ds As DataSet = GetData(SQL)
        Iridium_Get_Activation_List = Nothing
        Dim Activation_List(ds.Tables(0).Rows.Count) As Activation_List  
        Dim vSumofProrated = 0
        Dim vRow = 0
        For Each drDataRow In ds.Tables(0).Rows
             'missing code
            vRow = vRow + 1
        Next
        Return Activation_List
    End Function

是的,代码无法编译。

1 个答案:

答案 0 :(得分:2)

此行声明了一个类型为Activation_List

的新变量数组
Dim Activation_List(ds.Tables(0).Rows.Count) As Activation_List

此行声明了另一种不同类型的变量:

Dim RS_Activation_List = Get_Activation_List(Company_ID, Start_Date, End_Date, 0)

我们不知道你的代码是什么类型,但鉴于这行可行,它是一个自定义类型的二维数组:

RS_Prorated_Activation = FormatNumber(RS_Activation_List(RS_Sum_Activation, 5), 2)

将鼠标悬停在VS中的RS_Activation上,看看它的内容是什么类型。另外,请确保您有Option Strict On。