私は古いVBアプリケーションをC#で書き直していますが、このアプリケーションはある種の電卓です。したがって、いくつかの値をとるいくつかのサブルーチンで構成され、いくつかの新しい値(中間結果)が計算されます。これは後で他の計算で使用されます。VBからC#への変換、サブルーチンからの値の格納
、彼らがこれを行う方法は、このようなものです:VB6でのデフォルトは参照渡しですので、私はこのようなC#で同じことを行うことができ
int in = 4;
Call routine(in, outFromRoutine1);
Call routine2(outFromRoutine1, outFromRoutine2);
:
int in = 4;
int outFromRoutine2 = 0;
Routine(in, ref outFromRoutine1);
int outFromRoutine2 = 0;
Routine2(outFromRoutine1, ref outFromRoutine2);
しかし、私はこれがC#でこれを行うには奇妙な方法と考えられているかどうかだけ考えていますか?これはそれを行う奇妙なVBの方法のちょうどある並べ替えです。 C#でも同様に問題がありますか?
より正常です。 '' 'var result = routine2(routine1(in))' ''でも呼び出し中のコードが分からない場合、これは正しくない可能性があります –
ByRefはVB6コードでは一般的でした。だから最初に確かめたいのは、実際に* ref *を渡す必要があるということです。それは非常に頻繁ではありません。また、VS2017で利用可能な新しいC#v7 goodyについて考えると、変数を宣言する必要がないようにルーチン(in、out int outFromRoutine1)を書くことができます。 –