C# 7.0부터 로컬 함수라는 기능을 사용 할 수 있습니다.
함수내의 함수를 작성 할 수 있는 방법인데요 간단하게 아래와 같습니다.
public class MyClass : MonoBehaviour
{
void Start()
{
TestFunction();
CheckInt(); // Error
}
public void TestFunction()
{
int lTestInt = 100;
if (CheckInt(lTestInt))
Debug.Log("CheckInt True");
Debug.Log("CheckInt False");
bool CheckInt(int aInt) // 로컬 함수
{
if (aInt < 100)
return true;
return false;
}
}
}
함수 내부의 여러가지 조건이나 복잡도가 높아져서 함수화 할 때 클래스 내의 private 함수로 만들어도
클래스 내의 다른 함수에서 사용이 가능하기 때문에 의도하지 않은 사용을 야기 할 수 있습니다.
클래스 내에서 사용되지만 다른 함수내에서는 사용하지 않을 때를 생각해 볼 수 있을 것 같습니다.
위의 예제에서 Start함수에서 CheckInt() 함수를 사용하려고하면 에러가 날 것입니다.
이 외에도 여러가지 장점이 있으니 관련 문서를 읽어보시면 도움이 될 것 같습니다.
docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/local-functions
반응형