2011-01-25 2 views

답변

28

당신은 당신이 내장 된 정적 ForEach 방법을 사용할 수있는 배열을 처리하는 경우 : 당신이 List<T> 상대하고있는 경우에 당신이 ForEach 경우 내장 된 방법을 사용할 수 있습니다

Array.ForEach(yourArray, x => Console.WriteLine(x)); 

을 :

yourList.ForEach(x => Console.WriteLine(x)); 

내장하는 임의의 IEnumerable<T> 순서에 반대 것 아무것도 없다, 그러나 당신이 당신이 그것을 필요하다고 느낀다면 자신의 확장 방법을 롤 충분히 쉽게 :

yourSequence.ForEach(x => Console.WriteLine(x)); 

// ... 

public static class EnumerableExtensions 
{ 
    public static void ForEach<T>(this IEnumerable<T> source, Action<T> action) 
    { 
     if (source == null) throw new ArgumentNullException("source"); 
     if (action == null) throw new ArgumentNullException("action"); 

     foreach (T item in source) 
     { 
      action(item); 
     } 
    } 
} 
+0

이상하게도이 것들은 내장되어 있지 않습니다. 하나는 파이썬 패턴을 따르는 지, 하나는'Select'를 사용하여 새로운 열거 형을 만들 것이라고 생각하십니까? – Domi

3

foreach 라인 라이너 LINQ 확장 방법에 의해 달성 될 수있다.

대신 : 예를 들어

var result = new List<string>(); 
foreach (var item in someCollection) 
{ 
    result.Add(item.Title); 
} 

당신은 할 수 :

var result = someCollection.Select(x => x.Title).ToList(); 
2

물론, 당신은 List<>::ForEach 같은 것을 사용할 수 있습니다

List<String> s = new List<string>(); 
    s.Add("These"); 
    s.Add("Is"); 
    s.Add("Some"); 
    s.Add("Data"); 
    s.ForEach(_string => Console.WriteLine(_string)); 
0

가장 큰 차이점을 경우와 사업자 사이 ? 그 동안 진술서가있는 동안 "?" 표현을 생성합니다. 나는. 이 작업을 수행 할 수 없습니다

 

var _ = (exp) ? then : else; // ok 
 

만하지이 : 당신이 foreach는 표현 같은 것은 당연히 무효를 제외하고 반환 할 수있는 .NET이 존재하지 않는 찾고 있다면 그래서

 

var _ = if (exp) { then; } else { else; }; // error 
 

하지만, 이 무효 된 타입의 값은, 그래서 당신은 동등하게 바로 쓸 수 있습니다 : 단위 유형이 아닌 하나 개의 값으로 입력입니다 무효로 사용되는 많은 기능 언어에서

 

foreach (var item in collection) process(item); 
 

. 당신은 .NET에서이 문제를 에뮬레이트하고 자신의 foreach는 식을 만들 수 있습니다 거의 그러나 없다 같은 표현에 대한 모든 사용 사례를 존재

 

    class Unit 
    { 
     public override bool Equals(object obj) 
     { 
      return true; 
     } 

     public override int GetHashCode() 
     { 
      return 0; 
     } 
    } 

    public static class EnumerableEx 
    { 
     public static Unit ForEach<TSource>(
      this IEnumerable<TSource> source, 
      Action<TSource> action) 
     { 
      foreach (var item in source) 
      { 
       action(item); 
      } 

      return new Unit(); 
     } 
    } 
 

.

관련 문제