.NET Framework 4.0의 유형 분산
-
06-09-2019 - |
문제
IEnumerable<T>
, IComparable<T>
그리고 몇 가지 더 이제 유형 변수입니다. IList<T>
, ICollection<T>
그리고 다른 많은 사람들은 그렇지 않습니다. 왜요?
해결책
.NET Framework 4.0 소개 안전한 CO/Contra-Variance. IList<T>
그리고 ICollection<T>
가지다 T
입력 및 출력 위치 모두에서 IEnumerable<T>
가지다 T
출력 위치에서만 그리고 IComparable<T>
가지다 T
입력 위치에서만.
추정하다 IList<T>
지원되는 유형 분산 :
static void FailingMethod(IList<object> list) {
list[0] = 5;
}
static void Test() {
var a = new List<string>();
a[0] = "hello";
FailingMethod(a); // if it was variant, this method call would be unsafe
}
다른 팁
또한보십시오: C# 4.0 공분산 그렇지 않습니다 하다
Anders Hejlseberg는 그의 대화에서 "C#의 미래"에서 Co/Disravariance를 묘사하는 간단하지만 조명적인 토론을 가지고 있습니다. 공분산과 비밀화에 대한 그의 논의는 프레젠테이션에서 50 분 17 초에 시작됩니다.
제휴하지 않습니다 StackOverflow