"List<T>.ForEach()" وقابلية التغيير
-
15-11-2019 - |
سؤال
أريد ترجمة جميع النقاط في 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 في القائمة
لا تنتمي إلى StackOverflow