سؤال

هل يمكنني افتراض أن 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

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