C# 使用2个索引访问VB.NET 1D数组
试图将一些遗留的VB.NET代码移植到C#,并在数组索引中遇到语法问题 在名为Get_Coverage_Percentage的VB方法中,有一行代码如下所示: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
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,一定是发生了运行时错误。将需要得到项目执行确认,但打开严格是一个好主意。它暴露了其他几个问题,这就是为什么要重新编写项目。