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

C# 使用2个索引访问VB.NET 1D数组,c#,arrays,vb.net,C#,Arrays,Vb.net,试图将一些遗留的VB.NET代码移植到C#,并在数组索引中遇到语法问题 在名为Get_Coverage_Percentage的VB方法中,有一行代码如下所示: 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).Row

试图将一些遗留的VB.NET代码移植到C#,并在数组索引中遇到语法问题

在名为Get_Coverage_Percentage的VB方法中,有一行代码如下所示:

 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中有一行访问激活列表数组,如下所示:

  RS_Prorated_Activation = FormatNumber(RS_Activation_List(RS_Sum_Activation, 5), 2)
  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
如何使用2个索引访问一维阵列?激活列表本身是一个简单的结构,定义如下:

  RS_Prorated_Activation = FormatNumber(RS_Activation_List(RS_Sum_Activation, 5), 2)
  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 pro,我在看什么

*更新:* 方法*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

是的,代码没有编译。

这一行声明了一个类型为
Activation\u 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)
我们不知道您的代码中的类型是什么,但如果这一行可以正常工作,那么它是一个具有某种自定义类型的2d数组:

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

将鼠标悬停在VS中的
RS\u激活
上,查看其显示的类型。还要确保您有严格的选项。

您得到的是不可编译的代码。如果一切都像你描述的那样,那就无法编译。代码中的某个地方不是您所描述的。考虑到您对不同对象使用相同名称的倾向,您可能已经有了一个名为same@tinstaafl,我不是原创作者,所以我也在这里猜测。我只是添加了一个更新。正在方法Get\u Activation\u List中定义并返回类型为Activation\u List的数组。我没有看到“Dim RS_Activation_List as object”,将鼠标悬停在变量RS_Activation_List上。无法说明行是否工作,因为代码未编译。我同意有些事情很有趣。我在哪里启用严格模式?您可以在编译部分的项目属性中设置它:Option Strict=OnTanks,发现Option Strict,但现在project有102个错误!关闭选项后,project将成功编译:)仅仅因为它编译了,并不意味着有什么问题!如果“选项严格”处于禁用状态,则可能是掩盖了运行时错误。@MattWilko,一定是发生了运行时错误。将需要得到项目执行确认,但打开严格是一个好主意。它暴露了其他几个问题,这就是为什么要重新编写项目。