Setel beberapa properti dalam List <T> ForEach ()?


117

Diberikan kelas:

class foo
{
    public string a = "";
    public int b = 0;
}

Kemudian daftar umum dari mereka:

var list = new List<foo>(new []{new foo(), new foo()});

Jika saya menetapkan beberapa properti di dalam List<T> ForEach()metode berikut , apakah ada cara yang lebih sederhana untuk melakukannya di bawah ini? Mudah-mudahan saya sedikit tebal.

// one property - easy peasy
list.ForEach(lambda => lambda.a="hello!");
// multiple properties - hmm
list.ForEach(lambda => new Action(delegate() { lambda.a = "hello!"; lambda.b = 99;}).Invoke());

Sunting: Pikir ForEach()adalah metode ekstensi LINQ, padahal sebenarnya bagian dari List<T>ups!


Saya tidak memiliki petunjuk apa pun untuk jawaban Anda, tetapi saya sangat tertarik dengan metodologi kode ini. Bisakah Anda menjelaskan apa itu Tindakan?
Anwar

4
Bukan berarti itu penting, tetapi ini adalah metode aktif List<T>dan bukan LINQ. Juga, Anda dapat membuat daftar Anda denganvar list = new List<foo>() { new foo(), new foo() };
Marc

Jawaban:


265

Yang perlu Anda lakukan adalah memasukkan beberapa tanda kurung sehingga metode anonim Anda dapat mendukung banyak baris:

list.ForEach(i => { i.a = "hello!"; i.b = 99; });


11
list.ForEach(lamba=>lambda.a="hello!"); 

Menjadi

list.ForEach(item=>{
     item.a = "hello!";
     item.b = 99;
});

Tentu saja Anda juga dapat menetapkannya saat Anda membuat daftar seperti:

var list = new List<foo>(new []{new foo(){a="hello!",b=99}, new foo(){a="hello2",b=88}}); 

3
list.ForEach(i => i.DoStuff());
public void DoStuff(this foo lambda)
{
  lambda.a="hello!"; 
  lambda.b=99;
}

3

Sejujurnya, Anda tidak perlu menggunakan List.ForEach di sini:

foreach (var item in list) { item.a="hello!"; item.b=99; }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.