C# - Dynamic

양규빈·2024년 2월 1일
0

C# 공부

목록 보기
26/30
post-custom-banner

다이나믹이란?

C#의 다이나믹 키워드는 정적 형식 언어인 C#에서 런타임에 동적인 형식을 지원하도록 해주는 기능이다.

일반적으로 변수가 컴파일 시간에 타입이 결정되는 반면, 다이나믹은 런타임 시간에 타입이 결정되어 동적으로 결정된다.

즉, 다이나믹(Dynamic)은 개발자가 런타임 시점에 타입을 지정하지 않고, 객체의 멤버나 메서드를 동적으로 결정하고 호출할 수 있는 기능을 제공한다.

다이나믹을 사용하면 컴파일 시간에 타입을 알 수 없는 상황에서도 컴파일 오류를 방지하고 유연한 프로그래밍이 가능

다른 언어나 외부 컴포넌트와의 상호 운용성: C#은 다른 언어나 외부 컴포넌트와 상호 작용해야 할 때 유용하다.

다이나믹을 사용하여 동적 타입을 다룰 수 있으므로, 외부 컴포넌트에서 반환되는 데이터나 메서드 호출에 대한 응답을 동적으로 처리할 수 있다.

미리 정의되지 않은 형식과의 작업: 컴파일 시간에는 알 수 없는 형식과 작업해야 할 때 유용하다.
예를 들어, 동적으로 생성된 형식, JSON 또는 XML과 같은 데이터 구조, 리플렉션을 사용하여 런타임에 검색한 형식 등과 작업할 수 있다.

위와 같이 dynamic 형을 사용할 수 있다.

object와 dynamic

object는 모든 C# 객체의 기본 베이스 클래스로, 타입 캐스팅을 통해 형식을 변경할 수 있다.
오브젝트는 런타임 중에 타입이 결정되며, 어떤 형식이든 담을 수 있지만, 컴파일 타임 타입 안정석이 제공되지 않는다.

반면에 dynamic은 컴파일 타임에 타입 체크를 수행하지 않고 런타임에 동적으로 결정되는 타입으로, 캐스팅 없이 메서드 호출과 멤버 접근을 할 수 있다.

var과 dynamic

var는 컴파일러에 의해 변수의 타입이 자동으로 추론되며, 초기화된 값에 기반하여 정적인 타입을 갖는다.

반면, dynamic은 런타임에 동적으로 타입이 결정되며, 컴파일 시간에 멤버와 메서드의 타입 체크를 수행하지 않는다.

var는 컴파일 타임에 타입이 결정되고, dynamic은 런타임에 타입이 결정된다.

dynamic의 함수 사용

typeOf를 이용하여, dynamic으로 결정된 변수 자료형을 확인하고 난 후에 함수의 매개변수로써 사용하는 것도 가능하다.

무명함수를 이용한 접근은 가능하지만,
람다식을 이용한 접근은 불가능하다.

profile
훌륭한 개발자를 꿈꾸는 중입니다
post-custom-banner

0개의 댓글