سؤال

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
}

نصائح أخرى

إن أندرس هوسبرغ لديه مناقشة مختصرة، ولكن إضاءة يصف شركة CO / متناقضة في حديثه، "مستقبل C #". يبدأ مناقشته بشأن التباين والمكافحة في غضون 50 دقيقة و 17 ثانية في العرض التقديمي.

http://channel9.msdn.com/pdc2008/tl16/pdc2008/tl16/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top