gpt4 book ai didi

c# - 转换数组 - 从 VBA 到 C#(最佳实践)

转载 作者:行者123 更新时间:2023-11-30 15:25:04 26 4
gpt4 key购买 nike

我已经将大约 4000-5000 行代码从 VBA 转换为 C#。我遇到的唯一问题如下:


在 VBA 中,您可以创建一个类型的数组并设置起始索引。例如:

//This creates an Array with an index 5 to index 100.
doubleArray(5 To 100) As Double

在 C# 中无法创建从 0 以外的索引开始的数组。(请参阅下面的链接。)在我看来,这将留下以下两种可能性:

<强>1。创建一个从 0 到 100 的 doubleArray

我可以创建一个 doubleArray,如下所示:

Double[] doubleArray = new Double[100];

这样做的好处是我可以使用 VBA 代码中描述的索引号来设置索引。这意味着以下内容; VBA 代码假定数组存在于 [5] 到 [100] 之间,我还可以在 C# 中将数字 5 设置为 100。

然而,在我看来,这是相当困惑的,因为您将始终使用未使用的内存创建数组(在本例中为索引 [0] 到索引 [4])。因此,我在考虑第二种选择。

<强>2。创建一个从 0 到 ((topindex - bottomindex) + 1)

的 doubleArray

我可以创建一个 doubleArray,如下所示:

Double[] doubleArray = new Double[((topindex - bottomindex) + 1)];

在我看来,这应该是解决问题的“最干净”的方法,没有不必要的内存使用。在 VBA 中,数组使用 [5] 到 [100],这使得长度为 96。此选项 (((100 - 5) + 1) = 96) 也是如此。

然而,最大的缺点是这还需要忽略所有已经编写的代码。如果任何函数调用 doubleArray[97],它应该是 doubleArray[((97 - 5) + 1)]。


我的问题是,如何处理这种情况?

如果其他人看到其他选项/可能性,我们非常欢迎提出建议。


更多背景信息。我之前的问题的后续行动: Vba Type-Statement conversion to C#

最佳答案

三个步骤:

  1. 围绕 VBA 中数组的每个实例创建单元测试。

  2. 将所有 VBA 数组调整为从零开始,检查是否符合您的单元测试。

  3. 移植到 C#。

我希望避免跨语言边界引入错误,因为调和问题更加困难。

关于c# - 转换数组 - 从 VBA 到 C#(最佳实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com