런타임과 컴파일 타임에 대해서 여기 서 이해하고 오자
일단 핵심은
dynamic 형식은 컴파일 타임에 해석되지 않고 런타임에 해석된다.
그렇기 때문에 컴파일타임에 에러가 발생하지 않아 차후 에러에 원인분석에 어려움이 있을 수 있다.(런타임에 들어가야만 오류가 발생하기 때문에)
바로 이 지점에서 var와 dynamic이 많이 비교된다고 한다.
var apple = "사과"; Console.WriteLine(apple.Length); //apple를 치면 인텔리센스가 제시됩니다.
하지만 dynamic은 좀 다릅니다. dynamic은 object와 매우 유사하게 다루어집니다. 다음의 코드에서 컴파일러는 s.Length에 대해서는 아무런 판단도 하지 않습니다.
dynamic apple = "사과"; Console.WriteLine(apple.Length); //apple를 쳐도 인텔리센스가 제시되지 않습니다.
위의 코드는 런타임에 아무런 에러도 발생시키지 않겠지만 다음의 코드는 런타임에 에러를 발생시킵니다. 실행시 Brix 속성을 찾을수 없기 때문이죠.
dynamic apple = "사과"; Console.WriteLine(apple.Brix);
실제 프로그램 코딩시 dynamic타입은 메소드 파라메터로 자주 사용됩니다.
class Program { static void PrintValue(dynamic val) { Console.WriteLine(val.GetType()); } static void Main(string[] args) { PrintValue("HelloWorld!"); PrintValue(1000); PrintValue(10.50); PrintValue(true); PrintValue(DateTime.Now); } }
프로젝트의 성공을 기원합니다.
출처: https://spaghetti-code.tistory.com/32 [어떻게 짤것인가]
댓글 없음:
댓글 쓰기