var
- 어떠한 타입이라도 변수로 선언하여 사용할 수 있습니다.
- var 형식은 최초 초기화되어 타입이 정해진 이후에는 타입을 변경할 수 없습니다.
- null로는 초기화 할 수 없습니다.
- 선언 시점에 특정 타입으로 초기화 되어야 합니다.
- var 타입은 선언 시점에서 타입을 추정하기 때문에 인텔리센스가 완벽하게 지원 됩니다.
var 인텔리센스
- 데이터형의 속성 확인이 가능합니다.
object
- 어떠한 타입이라도 변수로 선언하여 사용할 수 있습니다.
값 형식 -> 참조형식
,참조형식 -> 값 형식
으로 형 변환을 할 경우 박싱(boxing : 값형식 -> 참조형식), 언박싱(unboxing : 참조형식 -> 값형식) 과정이 일어나며, 성능상 영향을 미칠 수 있습니다.
object 인텔리센스
- 데이터형의 속성 확인이 불가능합니다.
- 선언된 값은 object 그 자체 입니다.
dynamic
- 어떠한 타입이라도 변수로 선언하여 사용할 수 있습니다.
- 컴파일 시점에 타입에 대한 확인을 하지 않기 때문에 개발 시점에서 인텔리센스는 동작하지 않습니다.
dynamic 인텔리센스
- 데이터형의 속성 확인이 불가능합니다.
- 인텔리센스 동작하지 않습니다.
var, dynamic, object 공통점
- 선언 시점에 다양한 타입을 지정할 수 있다.
(var, dynamic) vs object 차이점
- var, dynamic은 선언된 원본 형식을 유지합니다.
- object는 선언된 원본의 특성을 유지하지 못합니다.
- 인텔리센스에서 적용되는 데이터형의 속성을 확인할 수 없습니다.
- object로 선언 되었다가 원본 형식으로 바꾸기 위해서는 반드시 형변환 처리가 필요합니다.
var vs dynamic 차이점
- 타입이 확정되는 시점이 다릅니다.
- var 형식은 컴파일 시점에 타입을 확정합니다.
- dynamic 형식은 런타임 시점에 타입을 확정합니다.
- dynamic 형식으로 사용하는 값이 올바르지 않은 타입이 지정이 되더라도 컴파일 시점에서는 모두 by-pass 되며, 런타임 시점에 예외를 발생하게 됩니다.
dynamic 속도 비교 테스트
'프로그래밍 > (도서)C#코딩의기술-실전' 카테고리의 다른 글
[C#] 코딩의기술(실전편) - 그 외, 챕터 별 간단 정리 (0) | 2022.03.31 |
---|---|
[C#] 코딩의기술(실전편) - 3.13 열거 데이터의 순서 변경 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.12 First메서드 VS Take메서드 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.7 Cast VS OfType (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.5 짧은쿼리 VS 긴 쿼리 (0) | 2022.03.31 |