نوع التباين في .NET Framework 4.0
-
06-09-2019 - |
سؤال
IEnumerable<T>
, IComparable<T>
وعدد قليل منهم الآن نوع البديل. IList<T>
, ICollection<T>
وغيرها الكثيرون ليسوا كذلك. لماذا ا؟
المحلول
.NET Framework 4.0 يقدم آمنة CO / كونترا التباين. 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 التغاير لا فعل
إن أندرس هوسبرغ لديه مناقشة مختصرة، ولكن إضاءة يصف شركة CO / متناقضة في حديثه، "مستقبل C #". يبدأ مناقشته بشأن التباين والمكافحة في غضون 50 دقيقة و 17 ثانية في العرض التقديمي.
لا تنتمي إلى StackOverflow