Section 31.3: ref 파라미터와 out 파라미터 비교
예제
class Program {
static void Main(string[] args) {
int a = 20;
Console.WriteLine("Inside Main - Before Callee: a = {0}", a);
Callee(a);
Console.WriteLine("Inside Main - After Callee: a = {0}", a);
Console.WriteLine();
Console.WriteLine("Inside Main - Before CalleeRef: a = {0}", a);
CalleeRef(ref a);
Console.WriteLine("Inside Main - After CalleeRef: a = {0}", a);
Console.WriteLine();
Console.WriteLine("Inside Main - Before CalleeOut: a = {0}", a);
CalleeOut(out a);
Console.WriteLine("Inside Main - After CalleeOut: a = {0}", a);
Console.ReadLine();
}
static void Callee(int a) {
a += 5;
Console.WriteLine("Inside Callee a : {0}", a);
}
static void CalleeRef(ref int a) {
a += 10;
Console.WriteLine("Inside CalleeRef a : {0}", a);
}
static void CalleeOut(out int a) {
// 여기서 a 는 메소드 선언시에 함께 선언되었을 뿐, 아직 값이 할당되지 않았으므로 a+=15 와 같은 표현을 사용할 수 없다
a = 25; // 이러한 방식으로 초기화를 해주어야 한다
Console.WriteLine("Inside CalleeOut a : {0}", a);
}
}
출력 결과
Inside Main - Before Callee: a = 20
Inside Callee a : 25
Inside Main - After Callee: a = 20
Inside Main - Before CalleeRef: a = 20
Inside CalleeRef a : 30
Inside Main - After CalleeRef: a = 30
Inside Main - Before CalleeOut: a = 30
Inside CalleeOut a : 25
Inside Main - After CalleeOut: a = 25
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
31.5: 메소드에서 ref 와 out 파라미터의 차이 이해하기 (0) | 2021.10.29 |
---|---|
31.4: Reference 타입에 대한 할당 (assignment) 작업 (0) | 2021.10.28 |
31.2: 두개의 다른 변수에 할당된 값이 함께 변경되는 예제 (0) | 2021.10.20 |
31.1: ref 키워드를 사용해 매개변수를 참조로 전달하기 (pass by reference) (0) | 2021.10.19 |
30.2: IEnumerable<int> (0) | 2021.10.18 |