質問

ParamArray byrefを使用する方法はありますか?それを除いて、それは同じことを成し遂げる回避策を持っていますか?

私はいくつかの過負荷をすることができましたが、私は不器用さを避けようとしています。

背景:古いコードに移植し、可能な限り同じ構造を維持しようとしています。


編集

私が欲しいものの具体的な例:

ターボバシックには、VB.NETに移植しているコードがあります。コードには、次のような関数が組み込まれています

Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

入力()はファイル#1を取得し、そこから3つのデータを読み取り、表示されている3つの変数に割り当てます。この動作を自分の入力()関数で複製したいと思います。そのために、3つの(またはそれ以上)変数をどのように取り込んで値を割り当てますか?

理想的には、私は自分の入力()の定義のみを変更するだけでこれを達成します。そのため、コードベースをできるだけ少なくすることができます。

役に立ちましたか?

解決

私はターボバスを使用したことがありませんが、構文はVB6と同じように見えます 入力#ステートメント, 、ですから、セマンティクスも同じだと思います。

このVB6コード

Input #1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

このVB.NETに相当します

Input(1,Data$(I%,1))
Input(1,Data$(I%,2))
Input(1,Data$(I%,3))

VB.NETアップグレードウィザードはVB6を変換します Input # このような声明。独自の関数を実装するのではなく、このようなコードを移植するだけです。 VB6からVB.NETに変換するには、コードベースで実質的な編集が必要です。TurboBasicはさらに厳しいと思います。

他のヒント

パラメーターを新しい配列インスタンスに割り当てて、発信者(変数またはフィールドを通過している)が新しいインスタンスを表示することを期待していない限り、必要ありません ByRef.

なくても ByRef, 、発信者は引き続き配列の内容の変更が表示されます。 (配列は参照タイプです)。

見えない場合 parameterName = something この方法では、必要ありません ByRef.

aのポイント ParamArray パラメーターは、暗黙的に作成された配列に渡すことです。
そのような使用法では、 ByRef 効果はありません。

現在、VB.NETで参照によりパラマレイを合格する方法はありません。一連の指定された値をパラマレイを受け入れるメソッドに渡すために、CLRは適切な長さの配列を指定した値に記入し、この配列を呼び出したメソッドに渡します。渡された配列からすべての値をコピーして元の変数に戻す方法はありません。

私はあなたがVB6からコードを移植していると思います それだけ パラマレイに合格する方法は参照されますが、.NETでこの機能を必要としないはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top