List <T> ForEach ()에서 여러 속성을 설정 하시겠습니까?


117

주어진 수업 :

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

그런 다음 일반 목록 :

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

다음 메서드 내에서 여러 속성 을 할당 하려는 경우 아래 List<T> ForEach()에서 더 간단한 방법이 있습니까? 바라건대 나는 조금 두껍습니다.

// 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());

편집 : ForEach()LINQ 확장 방법이라고 생각 했습니다. 실제로 List<T>웁스 의 일부입니다 !


귀하의 답변에 대한 단서가 없지만이 코드 의이 방법론에 매우 관심이 있습니다. 액션이 무엇인지 정의 해 주시겠습니까?
Anwar

4
중요하지는 않지만 이것은 List<T>LINQ 의 방법 이며 LINQ가 아닙니다. 또한 목록을 만들 수 있습니다.var list = new List<foo>() { new foo(), new foo() };
Marc

답변:


265

익명 메서드가 여러 줄을 지원할 수 있도록 몇 가지 대괄호를 도입하기 만하면됩니다.

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


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

된다

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

물론 다음과 같이 목록을 만들 때 할당 할 수도 있습니다.

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

솔직히 List.ForEach를 사용할 필요가 없습니다.

foreach (var item in list) { item.a="hello!"; item.b=99; }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.