هل يوفر ienumerator of .NET Ilist ترتيب القائمة؟
-
13-09-2019 - |
سؤال
هل يمكنني افتراض أن IEnumerator
أحصل من IList
(عن طريق استدعاء GetEnumerator
طريقة من IEnumerable
واجهة) سوف تعطيني العناصر في ترتيب القائمة؟
المحلول
لا يمكنك ذلك، لأن Ilist هي واجهة، ويمكن التنفيذ أن تعداد العناصر بأي ترتيب. على سبيل المثال، يمكن أن أقوم بتجربة Weirdlist: Ilist، ولديها تعداد العناصر بأي شكل من الأشكال، بما في ذلك غير محدد. إذا كنت تستخدم قائمة (T) من ناحية أخرى، فإنها تضمن لتعداد العناصر بالترتيب المخزنة في القائمة.
يحرر: أن القول، حيث يشير العديد من الآخرين، ستتبع معظم التطبيقات دلالات القائمة (ر). على الرغم من أن هذا لم يكن ما طلبت؛)
نصائح أخرى
يجب أن يمنحك العداد الوصول إلى الكائنات الموجودة داخل القائمة المتعلقة بموقفها في الذاكرة التي ستكون هي نفسها باستخدام فهرس القائمة التي تمر من 0 إلى الطول <1 في حلقة.
يحرر: أجبت على وجه التحديد فيما يتعلق بفئات .NET Framework التي تنفذ Ilist، هل يجب أن يكون أي شخص آخر ينفذ هذه الواجهات هو تطبيقها الفعلي قد يكون عن أي شيء آخر. لذلك يعتمد على المنفذ.
نعم، سوف تفعل ذلك بالضبط، لأي تنفيذ لائق لل IList
على الاكثر. جيد IList
يجب دائما تعداد عناصرها بنفس الترتيب كما تم فهرسة القائمة.
List<int> list = new List<int> { 1, 1, 2, 3, 5, 8 };
IEnumerator<int> enumtor = list.GetEnumerator();
while (enumtor.MoveNext())
{
Console.Write(enumtor.Current);
}
مطبوعات 112358
.
هذا سوف يعتمد على تنفيذ IList