728x90
728x90
| var | dynamic | |
| 타입 결정 시점 | 컴파일 타임 | 런타임 |
| 초기값 필수 여부 | ✅ 필수 (컴파일러가 추론) | ❌ 필요 없음 |
| 타입 변경 가능 여부 | ❌ 변경 불가 (한 번 결정되면 고정) | ✅ 변경 가능 |
| 컴파일 시 타입 체크 | ✅ 체크됨 | ❌ 체크되지 않음 |
| 성능 | ✅ 빠름 (컴파일러가 최적화 가능) | ❌ 느림 (런타임 처리 필요) |
| 오류 발생 시점 | 컴파일 시 오류 | 런타임 오류 발생 가능 |
✅ 예제
[ var ]
var num = 10; // 컴파일러가 int로 추론
Console.WriteLine(num.GetType()); // 출력: System.Int32
var text = "Hello"; // string으로 추론
Console.WriteLine(text.GetType()); // 출력: System.String
🚫 잘못된 사용 (타입 변경 불가)
var num = 10; num = "Hello"; // 오류! 'int'에서 'string'으로 변경 불가
[ dynamic ]
dynamic value = 10;
Console.WriteLine(value.GetType()); // 출력: System.Int32
value = "Hello"; // 타입 변경 가능
Console.WriteLine(value.GetType()); // 출력: System.String
🚨 문제점 (런타임 오류 가능)
dynamic text = "Hello";
Console.WriteLine(text.Length); // 가능 (string의 Length 사용)
text = 100;
Console.WriteLine(text.Length); // 런타임 오류 발생! (int에는 Length 없음)728x90
728x90
'Flutter > 개념' 카테고리의 다른 글
| Dart 기본기 - Dart 3.0 클래스 (1) | 2025.02.05 |
|---|---|
| Dart 기본기 - Stream, await, async, yield (2) | 2025.02.05 |
| Dart 기본기 - Future, await, async (3) | 2025.02.05 |
| Dart 기본기 - final vs const 차이 (2) | 2025.02.03 |
| Dart 기본기 - null 사용법 (2) | 2025.02.03 |
댓글