안녕하세요. BlockDMask입니다.
지난 시간에 ref 키워드 포스팅에서 call by value, call by reference에 대해서 배우고
in 키워드에 대해서도 배워봤습니다.
오늘은 C#에서 매개변수를 넘길 때 붙여줄 수 있는 out 키워드, out 매개변수 한정자에 대해서 알아보려고 합니다.
<목차>
1. C# out 한정자 설명
2. C# out 키워드 예제
1. C# out 설명
매개변수 한정자란 어떤 함수가 있을 때 매개변수 앞에 붙이는 키워드를 매개변수 한정자라고 부릅니다.
매개변수에 특정한 기능, 역할을 붙여줄 때 사용하게 됩니다.
이 매개변수 한정자 중에 오늘 배울 것은 "out" 키워드입니다.
반환형 함수 이름 (out 데이터 타입 변수)
void Func(out int num)
void Func(out string str)
위 함수처럼 out의 위치는 매개변수의 데이터 타입 앞에 위치하게 됩니다.
out 키워드를 사용하면 변수가 참조로 전달이 됩니다.
out 키워드를 사용한 매개변수는 함수 내부에서 무조건 값을 세팅해주어야 합니다.
int a = 10; // 초기화
int b; // 초기화 안함
// out 키워드
private void FuncEx(out int nun1, out int num2)
{
num1 = 99; // 무조건 값 세팅
num2 = 100; // 무조건 값 세팅
}
프로퍼티(=속성)는 변수가 아니므로 out 매개변수로 전달할 수 없습니다.
2. C# out 예제
2-1) C# out 예제
이렇게 out 키워드를 쓰는 변수는 초기화를 해도 되고 안 해도 됩니다.
당연하겠지만.
초기화를 안해도 될 때는 out 키워드가 붙은 함수를 호출해서 바로 세팅을 해주는 경우에 사용하면 될 것이고,
초기화를 해야 할 때는 out 키워드가 붙은 함수 호출 전에 다른 작업을 하기 위해 필요한 경우에 사용하면 됩니다.
2-2) C#에서 out을 실제로 쓰고 있는 곳
Int32.TryParse 함수는첫 번째 매개변수로 들어온 문자열을 int 타입의 숫자로 변환해서
두 번째 매개변수로 들어온 out 키워드 매개변수에 담아줍니다.
반환은 숫자로 변환이 가능한 값이면 true, 아니면 false.
첫 번째 예제를 보면 int num1을 따로 선언을 해서 함수 인자로 out 키워드를 포함해서 넘기는 것을 볼 수 있습니다.
이렇게 C#에서 Int32.TryParse 와 같은 함수에서 out 키워드들 사용하고 있습니다.
두 번째 예제를 보면 if(Int32.TryParse(str2, out int num2)) 이렇게 함수 인자로 넘겨줄 때 out int num2로 out 키워드를 붙여줌과 동시에 변수를 선언해주게 됩니다.
out 키워드를 사용하면 이렇게 인자에서 변수를 만들 수 있습니다.
이렇게 만든 num2는 이전에 main내부에서 선언해준 int num1; 과 동일한 스코프에 존재하는 것과 같습니다.
(지역변수 만들어주는 것)
즉, 해당 변수는 해당 if 스코프 밖에서도 접근이 가능한 것도 알 수 있습니다.
이상으로 오늘은 C#의 매개변수 한정자 중 out 키워드에 대해서 알아보았습니다.
감사합니다.
'<개인공부> > [C#]' 카테고리의 다른 글
[C#] in 매개변수 한정자 설명 및 예제 (in 키워드) (5) | 2022.10.29 |
---|---|
[C#] ref 매개변수 한정자 설명 및 에제 (ref 키워드) (0) | 2022.10.22 |
[C#] 확장 메서드 (Extension Method) 설명과 예제 (0) | 2022.10.15 |
[C#] Equals, ==, ReferenceEquals 비교 및 설명 (0) | 2022.10.08 |
[C#] 실행 시간 측정, 코드 수행 시간 측정(Stopwatch) (0) | 2022.09.25 |
[C#] const, readonly 설명 사용법과 차이점에 대해서 (0) | 2022.09.22 |
[C#] 타입 조사 Type, 리플렉션(reflection) (0) | 2022.09.11 |
[C#] 인덱서 객체(인스턴스)를 배열 처럼 사용해보자 (0) | 2022.09.04 |