سؤال

أريد ترجمة جميع النقاط في List<T>.هذا يعمل:

for (int i = 0; i <PolygonBase.Count; ++i) 
{
    PolygonBase[i] = PolygonBase[i] + MousePos;
}

ولكن باستخدام List<T>.ForEach لا:

PolygonBase.ForEach(v => v += MousePos);

أفكار؟

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

المحلول

الكود الحالي الخاص بك هو ببساطة إعادة تعيين المتغير المحلي v إلى قيمة جديدة - لا تشير إلى القيمة الأصلية في القائمة.إنه يعادل الكتابة:

foreach(int v in PolygonBase)
{
    v += MousePos;
}

لإعادة الكتابة إلى القيمة الأصلية، استخدم ConvertAll:

PolygonBase.ConvertAll(v => v += MousePos);

نصائح أخرى

ForEach غير قابل للتغيير، ولا يغير بنية البيانات بأي شكل من الأشكال.شاهد هذا التهديداستخدام عبارات لامدا الشرطية مع إجراء foreach في القائمة

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