SetValue / GetValue与通过参数直接访问数组

时间:2012-06-04 01:38:49

标签: vb.net vb6-migration

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

VB6中的示例代码:

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

通过ArtinSoft's 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没有做Variants,我发现该数组应该被输入为2D String Array。看起来没有理由使用GetValue / SetValue,因为前者返回一个Object而后者需要一个。这意味着如果我想将它转换为变量,我必须将返回的对象强制转换为String(Cstr),这似乎是一个可能引入错误的无意义的额外步骤。此外,由于该方法有很多重载,代码可能不那么清楚。 使用SetValue / GetValue 有什么好处,或者我应该只考虑转换Variant的VBUC工件,并像原始代码一样直接访问数组?

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

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

1 个答案:

答案 0 :(得分:1)

放弃对象以支持String。转换工具几乎总是将Variants视为Object,因为在VB6中Variant是通用类型,就像在.NET Object中一样。