뇌를 자극하는 C# 5.0 17장 연습문제 풀이
1.다음 코드 중 컴파일되지 않는 것을 고르세요.
① object a = 30;
② var a = 30;
③ dynamic a = 30;
3번? dynamic형식은 컴파일 시 에는 지나쳐가고 실행 시에 형식 검사를 하기 때문에.
var 형식은 컴파일 할 때 스스로 잘 찾아 갈 것이고...
object형식은 형변환을 시켜주면 될 것이고...
dynamic형식은 컴파일 시에는 지나칠 것이니 그래서 컴파일이 되지 않는 것 같다.
그래서 3번 찍었는데 확신은 없음.
=========================================================================================================
2. object, var , dynamic의 차이를 설명하세요.
object, var, dynamic 모두 선언 시점에 다양한 타입을 지정할 수 있다는 공통점이 있다.
object형식은 var, dynamic타입과 다르게 형변환 처리를 해줘야 한다.
var형식과 dynamic 형식의 차이점은 타입을 추정하여 확정하는 시점이 다르다는 점이다.
var형식은 컴파일 시점에 형식이 확정되지만,
dynamic형식은 실행 시점에 형식이 확정된다. 고로 dynamic 형식을 사용하는 값이 틀렸어도 컴파일 시점에는 잡히지 않는다.
=========================================================================================================
3.다음 코드는 컴파일은 되지만 실행은 되지 않습니다. 그 이유는 무엇입니까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; namespace Ex16_3 { class MyClass { public void FuncAAA() { //Do Nothing } } class MainApp { static void Main(string[] args) { dynamic obj = new MyClass(); obj.FuncAAA(); obj.FuncBBB(); } } } | cs |
dynamic 형식이 아니라 MyClass라고 했다면,
FuncBBB()가 MyClass에 정의되어 있지 않으니까, 컴파일 상에서 에러가 날 것이다.
(그리고 FuncAAA도 안될 것이다. 왜냐면 MyClass에는 FundAAA()가 정의되어 있으니까. 찡긋.)
dynamic형식으로 지정해서 컴파일시에는 형식 검사를 피하다가, 실행할 때 형식 검사를 하기 때문이다.
'뇌를 자극하는 C# 5.0프로그래밍' 카테고리의 다른 글
뇌를 자극하는 C# 5.0 16장 연습문제 풀이 (0) | 2017.02.11 |
---|---|
뇌를 자극하는 C# 5.0 15장 연습문제 풀이 (0) | 2017.02.09 |
뇌를 자극하는 C# 5.0 14장 연습문제 풀이 (0) | 2017.02.06 |
뇌를 자극하는 C# 5.0 13장 연습문제 풀이 (0) | 2017.02.03 |
뇌를 자극하는 C# 5.0 12장 연습문제 풀이 (0) | 2017.02.02 |