2013-10-30 7 views
0

파생 클래스에 기본 클래스를 캐스트 할 수없는 이유는 무엇입니까? 또한, 왜 컴파일러는 이것을 잡지 못합니까?기본 클래스를 파생 클래스로 캐스팅하는 방법

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      Parent p = new Parent(); 
      Child c = (Child)p; 

     } 
    } 

    class Parent 
    { 
     public string Data { get; set; } 
    } 

    class Child : Parent 
    { 
     public string OtherDate { get; set; } 
    } 
} 
+2

작동 방식. 'c.OtherDate'는 무엇을합니까? – Blorgbeard

답변

0

pParent의 인스턴스이다, 그래서 당신은 하나를 해석하는 런타임을 말할 수 없다.

컴파일러는 그것을 잡을하지 않기 때문에이

Parent p = new Child(); 
Child c = (Child)p; 

과 같은 코드 컴파일러를 잡기 위해 필요한 정적 코드 분석을하지 않습니다. 그것을 확인하지 않는 이유는 다음과 같습니다

  • 그것은

  • 그것은 단지 오류의 인스턴스의 일부를 잡을 수있는 시간이 소요입니다.

관련 문제