[이것이 C#이다] 17장 dynamic 형식
dynamic 형식
: 형식 검사를 하는 시점이 프로그램 실행 중인 데이터 형식
-> 컴파일러의 형식 검사를 피할 수 있음
"오리처럼 걷고 오리처럼 헤엄치며 오리처럼 꽉꽉거리는 새를 봤을 때, 나는 그 새를 오리라고 부른다."
💡 C#의 상속 관점이 아닌, 비슷한 기능과 메소드를 가질 때를 의미
⚒️ 상속 관계를 이용하지 않기 때문에 인터페이스 설계
시 만나는 문제들을 유연하게 대처할 수 있게 도와줌
⭐️ dynamic 형식 미사용 컴파일러 오류 예
Duck[] arr = new Duck[]{new Duck(), new Mallard(), new Robot()};
🔗 사용 예
dynamic[] arr = new dynamic[]{new Duck(), new Mallard(), new Robot()};
foreach (dynamic duck in arr)
{
Console.WriteLine(duck.GetType());
duck.Walk();
duck.Swim();
duck.Quack();
}
COM (Component Object Model)
: Microsoft 소프트웨어 컴포넌트 규격
RCW (Runtime Callable Wrapper)
: COM에 대한 프록시 역할을 통해 C# 코드에서 COM API
사용 지원
CLR (Common Language Runtime)
: IL (Intermediate Language)
로 컴파일할 수 있는 언어들만 지원
-> 파이썬, 루비 ❌
DLR (Dynamic Language Runtime)
: CLR
위에서 동작하며 파이썬과 같은 동적 언어를 .NET 플랫폼에서 실행 가능
미리 형식 검사를 할 수 없는 동적 형식 언어에서 만들어진 객체를 C#의
dynamic
형식이 받아낼 수 있음