如何将这段 VB6 代码转换为 C#,同时保持原始逻辑?

问题描述 投票:0回答:1

我正在致力于将 VB6 应用程序转换为 C# 来使其现代化。我遇到的一项挑战是将某些 VB6 模式转换为其 C# 等效模式,尤其是在处理 API 和数据结构时。

Dim myArray(1 To 5) As Integer
Dim i As Integer

For i = LBound(myArray) To UBound(myArray)
    myArray(i) = i * 10
Next i

Debug.Print myArray(3)

我尝试像这样转换它:

int[] myArray = new int[5];

for (int i = 0; i < myArray.Length; i++)
{
    myArray[i] = i * 10;
}

Console.WriteLine(myArray[2]); // Equivalent to VB6's myArray(3)?

它有效,但有一些我不确定的事情:

在 VB6 中,数组从 1(或自定义下限)开始。在 C# 中,数组是从零开始的。在迁移更复杂的 VB6 逻辑时,如何正确考虑这一点?

当VB6的

LBound
UBound
出现在较大的项目中时,我应该如何处理它们?是否有 C# 等效项或更好的迁移模式?

vb6
1个回答
0
投票

如果您确实希望索引从 1 到 5,那么只需使数组中的一个元素太大,然后忽略索引 0(零)处的槽即可:

int[] myArray = new int[6]; // one element bigger than necessary
for (int i = 1; i < myArray.Length; i++) // starts at 1 (one)
{
    myArray[i] = i * 10;
}
Console.WriteLine(myArray[3]); // actually using 3 for the third element

当然,这仅适用于下限 1(一)。

© www.soinside.com 2019 - 2024. All rights reserved.