VB.NETでParamArrayが値渡しに

解決


こじ  2003-08-19 16:26:10  No: 108156  IP: [192.*.*.*]

VB6.0からVB.NETへの移行作業をしています。
VB.NETからParamArrayが値渡しになり、プロシージャ内で
ParamArrayの内容を変更できないようになってしまいました。
なにかよい方法はないものでしょうか?

よろしくお願いします。

編集 削除
クリリン  2003-08-19 17:34:56  No: 108157  IP: [192.*.*.*]

質問の内容は理解できませんが、恐らく、引数の値がByValになってしまい、
関数が戻った時に値が変わらないという事で解釈して答えます。
ずばり、ByValをByRefに変えてください。
これにより、参照渡しが出来るようになります。

編集 削除
こじ  2003-08-19 17:47:24  No: 108158  IP: [192.*.*.*]

VB.NETではParamArrayをByRefにできないようです。

編集 削除
こじ  2003-08-19 17:47:51  No: 108159  IP: [192.*.*.*]

根本的に書き換えないといけないでしょうか?

編集 削除
クリリン  2003-08-19 17:55:56  No: 108160  IP: [192.*.*.*]

VB6の時代からByVal,ByRefは使われていました。
実は、この記述を省略すると内部でByRefとして扱われていたのです。
.NETになって引数の扱いが厳密になった為、どうしようもありません。
この際、変数の扱い方を見直して見てどうでしょうか?
参考までに・・・
http://www.gj.il24.net/~nakasima/vb/tech/style/index.htm
を読んでみてください。読みやすいし、クラスの考え方とかも解るようになりますよ。

編集 削除
こじ  2003-08-19 18:00:29  No: 108161  IP: [192.*.*.*]

クリリンさん、ありがとうございます。

編集 削除
クリリン  2003-08-19 18:10:08  No: 108162  IP: [192.*.*.*]

そもそも、ParamArrayはパラメータ配列ですよね?
パラメータを変更することはあまり好ましくありませんが・・・
どうしても変更したいのであれば、戻り値を設けるなりして行ないましょう

編集 削除
こじ  2003-08-19 18:14:58  No: 108163  IP: [192.*.*.*]

ありがとうございました。

編集 削除