2012-01-17 19 views
18

kafa karıştıran Aşağıdaki kod örneği inceleyin kod örneği, TempList listesindeki nesneleri DEĞİŞTİRMEZ.List.ForEach bana

Bu gönderi nedenini anlamaktan daha fazlası ...? Ya da en azından nedenini anlamak için biraz yardım alınız ...

cevap

40

Sub yerine Function kullandınız. Bir Function bir değer döndürdüğünden, derleyici eşittir işaretinin (=) bir ödev değil karşılaştırma olarak kullanıldığını düşünür. Eğer Sub için Function değiştirirseniz, derleyici doğru eşittir bir ödev olarak imzalamak ele alacak: Bir satırlı lambda olsaydı

TempList.ForEach(Sub(obj) obj.Deleted = True) 

;

TempList.ForEach(Function(obj) 
        obj.Deleted = True 
        Return True 
       End Function) 

Açıkçası, dönüş değeri kullanılamaz çünkü bir Sub kullanmalıdır böylece hiçbir anlamı, bir Function kullanmayı kolaylaştırır ForEach yöntemi için: Bu sorununuz olmayacaktı.

+0

Ahhh, şimdi mükemmel bir anlam ifade ediyor, bunun için çok teşekkürler. Hepsi hala benim için oldukça yeni :-) –

+0

İlk başta, ne olduğunu bilmiyordum ;-) –

+0

Bu şeyin ne kadar güçlü olduğuna hayran kaldım, kendimi bunu da öğrenmeye zorluyorum. LINQ. –

İlgili konular