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
반응형