ref키워드는 변수를 참조 형태로 전달하는데 사용된다. 이는 변수가 메서드 안에서 변경될 수 있다는 뜻이다.
out키워드 또한 변수를 참조 형태로 전달하는데 사용된다. 하지만 변수를 전달하기 전에 변수를 초기화 하지 않아도 된다. 하지만 메서드 안에서는 반드시 할당되어야한다.
Ref 키워드란 무엇인가?
- 명시적으로 ref 키워드를 작성해야한다.
- 매개변수로 전달하기 전에 반드시 초기화 되어야한다.
class Program
{
static void Main(string[] args)
{
int var = 1; // 전달하기 전에 초기화 되어야한다.
RefFunction(ref var);
Console.WriteLine("var : ", var);
}
// ref keyword
public static void RefFunction(ref int i)
{
i = 10;
}
}
Out 키워드란 무엇인가?
- 명시적으로 out 키워드를 작성해야한다.
- 매개변수로 전달되기 전에 초기화하지 않아도 상관없다.
- 전달된 함수 내에서 반드시 할당되어야한다.
class Program
{
static void Main(string[] args)
{
int var;
OutFunction(out var);
Console.WriteLine("var : ", var);
}
// out keyword
public static void OutFunction(out int i)
{
i = 10; // 내부에서 반드시 할당되어야한다.
}
}
어느 상황에 사용하면 좋을까?
ref 키워드는 메서드 내에서 전달하는 변수를 변경해야할 때 좋은 선택이다.
out 키워드는 메서드 내에서 전달하는 변수를 초기화할 때 좋은 선택이다.
ref 파라미터는 메서드에 전달되기 전에 반드시 초기화 되어야하지만 out 파라미터로 전달되는 경우에는 초기화 되지 않아도 된다. 즉 out 파라미터는 해당 메서드가 호출되기 전에 전달되는 파라미터의 정확한 값을 몰라도 사용이 가능하다.
ref 키워드 장점
매개변수를 레퍼런스로 전달하기 때문에 성능 향상을 기대할 수 있습니다. 레퍼런스로 전달한다는건 해당 변수에 직접 접근하여 복사가 일어나는 것을 방지합니다. 즉 시간과 메모리를 절약합니다. 특히 변수가 매우 큰 경우에 말이죠
out 키워드 장점
코드의 가독성을 높여주고 작성해야하는 코드는 양을 줄여줍니다. 메서드 내에서 반드시 할당해야하기 때문에 프로그래머가 실수하는 상황을 미연에 방지해줍니다.
'프로그래밍 > C#' 카테고리의 다른 글
C# is, as, typeof(), GetType() Type-testing 연산자에 대해서 (8) | 2023.04.12 |
---|---|
C# 이벤트(Event)에 대해서 알아보자 (4) | 2023.04.05 |
C# 확장 메서드(Extension Method) (2) | 2023.04.03 |
Boxing, UnBoxing에 대해서 알아보자 (1) | 2023.03.31 |
C# 코드 컴파일 단계에 대해서 (2) | 2023.03.29 |
댓글