2011-02-17 11 views
5

मैं List<T> में सभी बिंदुओं का अनुवाद करना चाहता हूं। यह काम करता है:'सूची <T> .EEach()' और mutability

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

लेकिन List<T>.ForEach का उपयोग नहीं करता है:

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

विचार?

+0

शायद foreach एक नई सूची देता है? – Marco

उत्तर

11

आपका वर्तमान कोड स्थानीय चर v को एक नए मान में फिर से असाइन कर रहा है - यह सूची में मूल मान को वापस संदर्भित नहीं करता है। यह लेखन के बराबर है:

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

जिससे वास्तविक मान यह लिखने के लिए, ConvertAll का उपयोग करें:

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

आह, धन्यवाद। मैं संदर्भ द्वारा एक foreach प्राप्त करने के लिए देख रहा था, लेकिन सी # + के लिए भी सी ++ रास्ता है ... – Tili

संबंधित मुद्दे