Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

nomad-programmer

[Programming/C#] dynamic 형식 본문

Programming/C#

[Programming/C#] dynamic 형식

scii 2020. 9. 26. 22:03

dynamic 형식도 int, string과 같은 하나의 데이터 형식이다. 다만 형식 검사가 컴파일할 때 이루어지는 다른 형식과는 달리 형식 검사가 프로그램 실행 중에 이루어진다는 점이 다르다. 

class MyClass
{
    public void FuncA() { }
}

class MainApp
{
    static void Main(string[] args)
    {
        MyClass obj = new MyClass();
        obj.FuncA();
        // FuncB() 메소드는 정의되어 있지 않으므로 컴파일 에러 발생
        obj.FuncB();
    }
}

위의 코드는 컴파일되지 않는다. MyClass 클래스는 FuncB() 라는 메소드가 선언되어 있지 않기 때문이다.

class MyClass
{
    public void FuncA() { }
}

class MainApp
{
    static void Main(string[] args)
    {
        // dynamic 형식으로 선언된 obj는 컴파일러의 형식 검사를 피해간다.
        dynamic obj = new MyClass();
        obj.FuncA();
        obj.FuncB();
    }
}

MyClass를 이용해서 obj를 선언하던 코드와는 달리 dynamic 키워드를 이용해서 obj를 선언한 위의 코드는 컴파일러의 방해 없이 실행 파일을 만들어 낼 수 있다. 컴파일러가 dynamic 키워드를 만나면 형식 검사를 실행할 때 검사하도록 미루기 때문이다.

dynamic 키워드는 형식 검사를 컴파일할 때 실행해도 미루겠다는 것뿐이지, 하지 않겠다는 것은 아니다. "강력한 형식 검사"는 dynamic 키워드가 사용된 곳에서도 여전히 유효하다.

Comments