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

確かに文字列を支持してオブジェクトを捨てます。VB6では、.NETオブジェクトと同様に、バリアントはユニバーサルタイプであるため、変換ツールはほとんどの場合、バリアントをオブジェクトとして扱います。

于 2012-06-04T01:44:44.483 に答える