ref와 out은 매우 비슷한 기능을 가진 키워드 입니다.
매개변수를 전달 할 때 사용 되며 이 둘의 차이점은 변수에 대한 초기화 입니다.
ref 키워드는 초기화 한뒤 사용하여야 하고 out키워드는 초기화가 필요 없고 이전의 값이 모두 무시된다는 점에 있습니다.
예제를 보겠습니다.
public void RefOut()
{
int x = 2; //변수 2
int y = 2; // out,ref에 사용할 변수
RefIn(x, ref y);
Console.WriteLine(x + ", " + y);
MessageBox.Show(y.ToString());
RefIn(x, ref y);
MessageBox.Show(y.ToString());
OutIn(x, out y);
MessageBox.Show(y.ToString());
OutIn(x, out y);
MessageBox.Show(y.ToString());
}
// ref 활용 곱셈
public void RefIn(int a, ref int rf)
{
rf = a * rf;
}
//out 활용 곱셈
public void OutIn(int a, out int ot)
{
ot=0; //out키워드는 선언을 하지 않으면 컴파일 에러 발생
ot = a * ot;
}
위의 예제를 실행할 시 ref y의 값은 8 out키워드를 사용한 y의 값은 0으로 ref는 변수가 할당 된 상태로 쓸 수 있다는 점이며
out 키워드는 변수를 무조건 재 선언하여 지정 해야 한다는 점이 가장 큰 차이입니다.
즉 ref는 기존의 내용을 담고 있기에 연속된 상황에서 쓰는 것이 아니라면 초기화를 해서 사용하여야하며 out은 그럴 필요없이 메서드 내에서 다시 재선언 해서 사용하기 때문에 따로 초기화 하는 것에 신경 쓸 필요 없습니다.
'c#' 카테고리의 다른 글
C# 문법 Action Func Predicate delegate 차이점 (0) | 2023.06.06 |
---|---|
C# 문법 Linq 링큐 알아보기 (0) | 2023.06.04 |
ASP.Net Core MVC Entity Frame work 사용하기 -1 (0) | 2023.04.17 |
C# visual studio 파일을 여는 중 무한 로딩 해결 방법 (1) | 2023.04.12 |
WPF Gird panel 사용법 (0) | 2023.03.23 |