0

我有一个数组,它最初是 VB6 中的 Variant 数组。

VB6 中的示例代码:

ListBoxDrawings.List(X1, Y1) = myArray(X2, Y2)
myArray(A, B) = ListBoxDrawings.List(I, C)

通过ArtinSoft 的 VBUC运行它后,它的值使用GetValue&处理SetValue

VB.NET 中的示例代码:(忽略到 ListView 的转换)

ListViewDrawings.Items(X1).SubItems(Y1).Text = CStr(myArray.GetValue(X2, Y2))
myArray.SetValue(ListViewDrawings.Items(I).SubItems(C).Text, A, B)

由于 VB.NET 不做变体,我发现该数组应该被键入为 2D 字符串数组。似乎没有理由使用 GetValue/SetValue,因为前者返回一个对象,而后者需要一个。这意味着如果我想将返回的对象分配给一个变量,我必须将它转换为字符串(Cstr),这似乎是一个可能引入错误的毫无意义的额外步骤。此外,由于该方法有很多重载,因此代码可能不那么清晰。 使用 SetValue / GetValue 有什么好处,还是我应该只考虑 VBUC 转换 Variant 的工件,并像原始代码一样直接访问数组?

没有 Get/Set 方法的 VB.NET:

ListViewDrawings.Items(X1).SubItems(Y1).Text = myArray(X2, Y2)
myArray(A, B) = ListViewDrawings.Items(I).SubItems(C).Text
4

1 回答 1

1

肯定会抛弃对象以支持字符串。转换工具几乎总是将 Variant 视为 Object,因为在 VB6 中,Variant 是通用类型,就像在 .NET Object 中一样。

于 2012-06-04T01:44:44.483 回答