[C#] dynamic 형식

Yijun Jeon·2023년 9월 30일
0

C#

목록 보기
5/7
post-thumbnail

[이것이 C#이다] 17장 dynamic 형식

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();
}

.NET 과 COM 상호 운용성

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 형식이 받아낼 수 있음

  • DLR 제공 클래스들

0개의 댓글