IEnumerable<T>
、IComparable<T>
およびさらにいくつかがタイプバリアントになりました。IList<T>
、ICollection<T>
および他の多くはそうではありません。なんで?
3 に答える
11
.NET Framework 4.0では、安全な共分散が導入されています。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
}
于 2009-05-31T19:16:41.063 に答える
2
于 2009-05-31T21:28:17.787 に答える
1
Anders Hejlsebergは、彼の講演「The Future of C#」で共変性と反変性について説明する、簡潔でありながら明るい議論をしています。共変性と反変性に関する彼の議論は、プレゼンテーションの50分17秒から始まります。
于 2009-05-31T19:22:23.783 に答える