지역 함수(Local Function)
C#의 지역 함수는 함수의 본문 내부에 존재하는 함수입니다. 함수를 사용할 수 있는 범위가 상위 함수 본문으로 제한되므로 지역 함수라고 하며, C# 7.0에 도입된 기능입니다.
특정 함수 본문 내부에 정의된 함수를 지역 함수, 하위 함수라고 말하며, 특정 함수는 상위 함수라고 말합니다.
지역 함수 특징
- 지역 함수는 종료자(finalizers), 람다 표현식(lambda expressions), 생성자(constructors) 등에서 호출할 수 있습니다.
- 지역 함수는 기본적으로 private이므로 접근 한정자 및 static 키워드를 사용할 수 없습니다.
- main() 함수 또는 상위 함수에서 지역 함수 정의 후 여러 번 호출할 수 있습니다.
- 지역 함수는 오버로드(Override)할 수 없습니다.
- 지역 함수는 상위 함수의 변수를 접근할 수 있습니다.
지역 함수 예제
다음은 지역 함수를 사용하는 예제입니다. Main() 함수 내부에서 지역 함수 PrintValue(), Add(), Minus()라는 내부 함수를 정의하였습니다.
class Program
{
static void Main(string[] args)
{
int addvalue = Add(10, 20);
int minusValue = Minus(100, 50);
PrintValue("Hello");
Console.WriteLine("addvalue: " + addvalue);
Console.WriteLine("minusValue: " + minusValue);
void PrintValue(string value)
{
Console.WriteLine("value: " + value);
}
int Add(int x, int y)
{
return x + y;
}
int Minus(int x, int y)
{
return x - y;
}
}
}
실행 결과
value: Hello
addvalue: 30
minusValue: 50
변수 addValue와 minusValue의 값을 Add()와 Minus() 함수로 초기화하였습니다. 위 예제에서 볼 수 있듯이 지역 함수는 호출 후 나중에 정의할 수 있습니다.
다음은 지역 함수에서 상위 함수의 변수를 접근하는 예제입니다. 지역 함수 Add()와 Minus()에서 상위 함수의 변수 value의 값을 콘솔 창에 출력합니다.
class Program
{
static void Main(string[] args)
{
string value = "Hello";
int addvalue = Add(10, 20);
int minusValue = Minus(100, 50);
int Add(int x, int y)
{
Console.WriteLine("Main() 함수의 value: " + value);
return x + y;
}
int Minus(int x, int y)
{
Console.WriteLine("Main() 함수의 value: " + value);
return x - y;
}
}
}
실행 결과
Main() 함수의 value: Hello
Main() 함수의 value: Hello
정리
- 함수 본문에 정의된 함수를 지역 함수라고 말합니다.
- 상위 함수에서 특정 기능을 여러 번 사용한다면, 지역 함수로 구현할 수 있습니다.
- 재귀 함수를 지역 함수로 구현할 수 있습니다.
반응형
'C#' 카테고리의 다른 글
[C#]잠금 및 Lock 키워드 (0) | 2022.06.05 |
---|---|
[C#]스레드 동기화(Thread Synchronization) (0) | 2022.06.05 |
[C#]멀티스레드(MultiThread) (0) | 2022.05.28 |
[C#]Thread 생성자(Thread Constructor) (0) | 2022.05.28 |
[C#]캡슐화(Encapsulation) (0) | 2022.05.25 |
댓글