我正在用C#重新編寫一箇舊的VB應用程序,這個應用程序是某種計算器。所以它由一些子程序組成,這些子程序需要一些值,並計算一些新值(中間值結果),稍後將其用於其他一些計算中。從VB轉換爲C#,存儲子程序的值
他們這樣做的方式是這樣的:
int in = 4;
Call routine(in, outFromRoutine1);
Call routine2(outFromRoutine1, outFromRoutine2);
在VB6默認爲按引用傳遞,所以我可以做同樣的在C#這樣的:
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),因此您不必聲明變量。 –