سؤال

أنا أميل إلى استخدام ArrayLists من الهياكل.ومن ثم يصبح من السهل جدًا التنقل عبر القائمة باستخدام foreach.

المشكلة التي أواجهها هي أنني لا أستطيع استخدام foreach لتعديل محتويات الهياكل ويجب علي استخدام typecasts for والفوضوية.

((dataStructure)files[x]).name = here;

هل هناك طريقة أكثر ترتيبًا للقيام بذلك؟

هل كانت مفيدة؟

المحلول

أعلم أن هذا يبدو تبسيطيًا ولكن فقط قل لا لأنواع القيمة القابلة للتغيير.

إنهم تقريبًا أبداً الحل الصحيح للمشكلة.هناك جداً استثناءات قليلة، ولكن الطبقات تقريبا دائماً وسيلة للذهاب.

بالإضافة إلى ذلك، إذا كنت تستخدم بالفعل ArrayList إذن ستتحمل تكلفة فتح العلبة بالفعل...(كما يقول كونراد، إذا كان بإمكانك استخدام .NET 2.0، فاستخدم الأدوية العامة.)

إذا كنت تصر حقًا على استخدام هياكل قابلة للتغيير، فاستخدم ملف for حلقة بدلا من foreach.ولكن من فضلك، من فضلك قم بالتغيير إلى الفصول الدراسية على أي حال.

نصائح أخرى

نعم، هناك: لا تستخدم ArrayList مصنف، وإهمال هذه الأنواع لصالح الأنواع العامة في System.Collections.Generic. في الحالة الخاصة بك: List<T>

وأنت لا تزال لا يمكن استخدامها جنبا إلى جنب مع حلقة foreach لتعديل القيم هيكل ولكن على الأقل لم يكن لديك للادلاء.

استخدم ال نوعي نسخة من ArrayList: List<DataStructure>.

بهذه الطريقة تبدو الأمور أفضل كثيرًا:

files[x].name = here;

نعم، هناك حالات حيث List <T> هي أيضا ليست مفيدة. في تلك الحالات، أقدم خدعة في الأشغال اليدوية. بدلا من foreach، يجب عليك استخدام في حين حلقة:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top