저는 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 기능을 고려하면 변수를 선언 할 필요가 없도록 루틴 (in, out int outFromRoutine1)을 작성할 수 있습니다. –