Call By Value
- 값을 복사하여 전달
- 인자값을 수정해도 원본값에는 영향이 없음
- 원본과 사본이 다른 메모리를 참조한다.
Call By Reference
- 원본의 값을 공유
- 인자값을 수정하면 원본값도 수정된다.
- 원본과 인자가 같은 메모리를 참조한다.
ref 키워드
- 매개변수를 Call By Reference 방식으로 전달한다.
- 매개변수의 자료형 앞에 쓰인다.
void Tmp(ref int a);
out 키워드
- ref 키워드처럼 Call By Reference
- 매개변수에 저장을 강제한다.
- ref의 경우 원본값을 참조는 하지만 값의 저장이 없어도 상관없다. 하지만 out의 경우 함수 내에 out 매개변수에 값의 저장이 없을 경우 컴파일 오류를 발생시킨다.