RuntimeTypeHandle과 Type의 차이점은 무엇입니까?
-
09-06-2019 - |
문제
그리고 내 코드에서 왜 다른 것을 사용합니까?
해결책
주의:이 답변은 오래된 것 같습니다. 이는 .NET 4가 출시되기 전에 게시되었으며, 이에 대한 일부 최적화가 도입된 것으로 보입니다.
Type
따라서 이 답변의 정보가 더 이상 사용되지 않게 되었습니다.보다 이 최신 답변 자세한 내용은.
에 따르면 Vance Morrison이 작성한 이 블로그 게시물(2006년), RuntimeTypeHandle
값 유형입니다(struct
) 관리되지 않는 포인터를 래핑하므로 Type.GetTypeHandle(obj).Equals(anotherHandle)
엄격한 "정확히 동일한 유형" 비교에 사용하는 것이 더 빠릅니다. obj.GetType().Equals(anotherType)
— 후자가 생성 System.Type
분명히 더 무거운 사례입니다.
그러나 덜 명확하고 확실히 "미세 최적화" 범주에 속하므로 둘 중 하나가 필요할 때 궁금하다면 System.Type을 사용해야 할 것입니다.
다른 팁
.NET 4.0 베타 1에서 RuntimeTypeHandle
그냥 포장 RuntimeType
.저렴하게 사용하면 모든 장점이 있는 것 같아요 Type
프록시가 사라졌습니다.
위 주장에 대한 증거:
- 마이크로소프트의 에 대한 참조 소스
System.RuntimeTypeHandle
유형 이 유형은 실제로 단지 래퍼일 뿐임을 보여줍니다.System.RuntimeType
요즘에는. - Sandro Magi의 2013년 블로그 기사 "CLR:동적 유형 테스트 비용" 예상되는 성능 이점을 보여주는 벤치마크와 최종 메모가 포함되어 있습니다.
RuntimeTypeHandle
.NET 4에서는 사라졌습니다.
제휴하지 않습니다 StackOverflow