<개인공부>/[C#]

[C#] out 매개변수 한정자 설명 및 예제 (out 키워드)

BlockDMask 2022. 11. 5. 07:00
반응형

안녕하세요. 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 키워드에 대해서 알아보았습니다.
감사합니다.

반응형