본문 바로가기

C#

Call By Reference(값에 의한 전달) - ref, out

728x90

값에 의한 전달
- 값 복사란 두 개의 메모리가 존재하고 한쪽의 메모리에 들어있는 값을 다른 쪽의 메모리로 그 값만큼 복사하는 행위이다.

ref에 의한 참조
- 참조형 매개변수는 메모리의 위치에 대한 참조이다. 함수를 호출하면 참조형 매개변수는 함수가 호출될 때 넘겨지는 변수의 메모리 주소에 대한 참조값을 가지게 된다.
- 참조로 값을 넘길 때 주의할 사항은 참조할 대상은 반드시 초기화되어야 한다는 것이다. 초기화 되지 않은 변수를 넘겨줄 때 컴파일 에러가 발생한다.
- C의 포인터와 유사하게 메모리 내에 저장되어 있는 값을 가르킨다. 하지만 포인터라고 할 수는 없는 것이, 'unsafe'라는 포인터를 사용하기 위한 키워드가 따로 존재하기 때문이다. 단순히 참조를 하기 위한 키워드로 사료된다.

out에 의한 참조
- out 키워드를 사용하면 호출하는 쪽의 인수를 초기화 할 필요가 없다.
- 출력 전용 매개 변수. out 키워드를 적용한 변수는 읽어들일 수 없다. 대신 값을 내보내는 '쓰기'만 가능한 키워드이다.
- out 키워드가 쓰인 변수는 함수가 끝나기 전에 값을 저장해야 한다.

[참고]
https://runtoyourdream.tistory.com/279
https://blog.naver.com/PostView.nhn?blogId=khagaa&logNo=30096206597

728x90

'C#' 카테고리의 다른 글

@ 심벌 사용법  (0) 2022.12.15
불변성과 가변성(공변성, 반공변성)  (0) 2022.12.15
Invoke와 BeginInvoke의 차이점  (0) 2022.12.12
Action/Func/Predicate  (0) 2022.12.12
.NET Reflection을 이용한 메서드 호출  (0) 2022.12.02