[C#] dynamic의 대한 이해

Yoo Hyung Joo ·2023년 10월 30일
0

dynamic이 무엇인가?
정적 형식이지만 dynamic 형식의 개체가 정적 형식 검사를 건너뛴다.

dynamic은 동적 변수와 지역변수 둘 다 사용할 수 있고, 변수 선언시 값을 넣어줄 필요도 없으며, 자료형이 결정된 이후에도 다른 형태의 자료를 입력할 수 있다.

dynamic을 왜 사용하는가?
dynamic은 모든 타입을 다 허용한다.그래서 제네릭과 함께 사용할 때 쓰일 수 있다.
ex)

public class DynamicTest
{
	static T SumArray<T> (T[] vals)
    {
    	T temp = default(T);
        for(int i = 0; i < vals.Length;i++)
        {
        	temp += (dynamic)vals[i];
        }
        return temp;
    }
}

물론 이러한 방식을 사용하면 강제 형변환을 하기 때문에 런타임 때 오류가 발생할 수 있다. 또한 dynamic은 리소스를 많이 차지하고 런타임 때 오류가 발생할 확률이 매우 높기 때문에 정말로 필요한 상황이 아니면 사용하지 않는 것이 좋다.

dynamic vs var
var: 컴파일 상황 떄 자료형 부여
dynamic: 런타임 상활 때 자료형 부여

var: 선언과 동시에 옆에 적어주어야함
dynamic: 상관없음

느낀점
딱히 사용할만한 상황을 아직 경험해보지는 못했지만 기회가 되면 사용해보면 좀 더 확장성 있는 코드를 작성할 수 있을 것 같다.

profile
성장을 멈추지 않는 개발자

0개의 댓글