C# 복습하기 17) dynamic 형식

dynamic 형식

MSDN : dynamic 형식 사용(C# 프로그래밍 가이드)
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/using-type-dynamic

 - 형식 검사가 프로그램 실행중에 이루어짐.

 - dynamic 키워드를 사용하면 컴파일러가 형식 검사를 건너뛰고 실행할 때로 미뤄둠.

 

동적으로 형식 바꾸기

 - dynamic은 개체를 동적 형식으로 암시적으로 변환할 수 있다.

dynamic temp = 5;
temp = "가나다라";
temp = new B_Class();

 

dynamic으로 함수 호출하기

 - 상속이나 인터페이스를 이용하지 않았는데도 위와 같은 코드가 가능해진다.

 - 하지만 메소드의 이름을 바꿀 때는 실제로는 레퍼런스로 연결된게 아니라서 string처럼 직접 바꿔줘야한다.

 - 오타로 실제 형식이 가지고 있지 않은 메소드를 호출한 경우 런타임 오류를 일으킨다.

public class A_Class
{
    public void My() { }
}

public class B_Class
{
    public void My() { }
}

public class SampleClass
{
    public void SomeMethod()
    {
        dynamic[] dynamics = new dynamic[2] { new A_Class(), new B_Class() };

        foreach (var item in dynamics)
            item.My();
    }
}

 

var vs dynamic

 - var는 컴파일 시점에서 형식이 결정된다.

 - dynamic은 런타임 시점에서 형식이 결정된다.

 

 

 

 

댓글

Designed by JB FACTORY