을 통해 생성 된 인스턴스에 적용? 무슨 일이 일어난 건지 잘 모르겠다명시 적 캐스트 연산자는 다음과 같은 코드가 런타임에 예외가 발생 것을 발견했을 때 나는 놀라게했다 반사
답변
님 놀라게해서는 안 그래서 그들은, 컴파일 시간에 있지 실행 시간을 포착하고 있습니다.
우리가 코드에서 암시 적 입력을 제거하면, 그것은 조금 더 명확하게 :
object bInstanceReflection = Activator.CreateInstance(typeof (B));
Console.WriteLine(bInstanceReflection.GetType()); // <assemblyname>.B
A aInstanceReflection = (A) bInstanceReflection;
지금은 마지막 줄에, (A)
정상적인 참조 변환을 수행 object
에서 불과 캐스트는 것을 합리적으로 분명 . 사용자 정의 변환은 전혀 적용되지 않습니다. 당신이 .NET 4를 사용하는 경우
, 당신은 그것을 얻 동적 입력을 사용할 수 있습니다
이제 변환은 어떤 변환의 검색을 의미 동적 값에 적용되고// Note the change of type
dynamic bInstanceReflection = Activator.CreateInstance(typeof (B));
Console.WriteLine(bInstanceReflection.GetType()); // <assemblyname>.B
A aInstanceReflection = (A) bInstanceReflection;
사용은 실행 시간까지 연기되며, 사용자 정의 연산자가 사용됩니다.
var bInstanceReflection = Activator.CreateInstance(typeof (B));
하려면 :
var bInstanceReflection = (B)Activator.CreateInstance(typeof (B));
그래서 컴파일러는 지금 bInstanceReflection의 유형을 알고 올바른 implitic 연산자를 호출 할 수 있습니다
감사합니다 존, 당신 게시물은 나를 위해 매우 유용합니다! – Alex
B
을 만들었습니다. 그런 다음 A
으로 전송합니다.
유사한 레이아웃을 갖는 불구하고, B는 컴파일러에 의해인가 A. 정적 연산자는 관계가없는 아니라 런타임 캐스트 비아. C# 구문은 동일하지만 리플렉션을 처리 할 때 구문이 매우 다릅니다.
이것은 정상적인 동작입니다. 그들은 과부하, 사용자 정의 운영자는하지 재정 아무것도 - -
감사합니다. 마크, 정말 새로운 것이 었습니다. 나는 또한 비슷한 질문에 대한 답변을 에릭 Lippert 발견 http://stackoverflow.com/questions/2090092/is-there-a-way-to-do-dynamic-implicit-type-casting-in-c – Alex
당신은 단순히이 줄을 변경할 수 있습니다.
- 1. 나는 다음과 같은 코드가
- 2. 나는 다음과 같은 코드가
- 3. 이유는'InvalidCastException이 '나는 다음과 같은 예외가
- 4. JQuery와 나는 다음과 같은 코드가
- 5. 호출 대상이 다음과 같은 예외가 발생 예외를
- 6. 나는 다음과 같은 코드가 목록
- 7. 나는 다음과 같은 코드가 자바
- 8. 나는 다음과 같은 코드가 TouchXML
- 9. 이미지 나는 다음과 같은 코드가
- 10. std :: tr1 :: function이 Objective-C 블록과 함께 작동하는 이유는 무엇입니까? 나는 다음과 같은 코드가 실제로 작동하는 것을 발견했을 때
- 11. 는 다음과 같은 예외가 발생 TypeError 예외
- 12. 안드로이드에서 CCSprites 클래스 캐스트 예외가 발생 했습니까?
- 13. 어댑터 나는 다음과 같은 코드가 datamapper
- 14. C#을 명시 적 캐스트 문자열은
- 15. C# 인터페이스에 대한 암시 적 및 명시 적 캐스트 정의
- 16. JQuery와 분할() 나는 다음과 같은 코드가
- 17. 있는 UIImageView 나는 다음과 같은 코드가 이미지
- 18. 나는 다음과 같은 코드가 특정 창
- 19. 이유는/나는 다음과 같은 코드가 C
- 20. 다음과 같은 예외가 발생합니다
- 21. 나는 다음과 같은 샘플과 같은 몇 가지 C# 코드가
- 22. C#을 암시 적 캐스트 "오버로드"와 반사 문제
- 23. WPF 오류 나는 다음과 같은 예외가 무엇입니까 Login.xaml
- 24. 나는 다음과 같은 오류가 다음과 같은 예에서
- 25. 언제는 다음과 같은 코드가 생성
- 26. 나는 나는 다음과 같은 URL을
- 27. 엔티티 쿼리 나는 다음과 같은 코드가 각각 올바르게
- 28. 워드 프레스 : 그래서 나는 다음과 같은 코드가 루프에서 문제
- 29. C#을 나는 다음과 같은 구조의 계층 적 객체가 LINQ
- 30. 나는 다음과 같은 한
예외 메시지 란 무엇입니까? –