나는 onheriner 인 (exp) ? then : else
처럼 foreach oneliner가 C#에 있는지 알고 싶습니다.C# foreach oneliner를 사용할 수 있습니까?
11
A
답변
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);
}
}
}
5
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();
}
}
.
관련 문제
- 1. 다른 foreach 내부에서 foreach를 사용할 수 있습니까?
- 2. 요소를 순차적으로 순회하는 List (T) .ForEach()를 사용할 수 있습니까?
- 3. foreach 아키텍처를 수정할 수 있습니까?
- 4. C 프로그램에서 C++ 라이브러리를 사용할 수 있습니까?
- 5. 디버깅하는 동안 C# foreach 루프의 반복 컬렉션에 "볼"수 있습니까?
- 6. JSP 2.1에서 JSF 1.2를 사용하여 c : forEach 태그의 통합 EL 표현식에서 Hashtable을 사용할 수 있습니까?
- 7. foreach 문의 대안이 있습니까?
- 8. Foreach 문제가 C#
- 9. foreach 루프의 동작 잡기 C#
- 10. C# Foreach XML 노드
- 11. C# 익명 형식 foreach 루프
- 12. foreach 루프에서 C# string.replace
- 13. 스크립팅 언어로 C# 4를 사용할 수 있습니까?
- 14. C++에서 opIndexAssign을 사용할 수 있습니까?
- 15. C#에서 ID/OK를 사용할 수 있습니까?
- 16. 삭제 후 C++ 멤버를 사용할 수 있습니까?
- 17. C++에서 조건부 typedef를 사용할 수 있습니까?
- 18. 어떤 C++ 프로파일 러를 사용할 수 있습니까?
- 19. C#에서 일반 폼을 사용할 수 있습니까?
- 20. C++ .NET에서 익명 함수를 사용할 수 있습니까?
- 21. C# : ThreadStart에서 익명의 대리자를 사용할 수 있습니까?
- 22. C++에서 mysql을 어떻게 사용할 수 있습니까?
- 23. C# Marshal 클래스는 Xbox에서 사용할 수 있습니까?
- 24. Emacs의 C 키 대신 사용할 수 있습니까?
- 25. C# 메서드를 대리자로 직접 사용할 수 있습니까?
- 26. C++로지도 배열을 사용할 수 있습니까?
- 27. AMP 서버에서 C# 라이브러리를 사용할 수 있습니까?
- 28. C#에서 javascript를 사용할 수 있습니까?
- 29. ASP C# MVC를 사용할 수 있습니까?
- 30. Silverlight에서 Facebook C# SDK를 사용할 수 있습니까?
이상하게도이 것들은 내장되어 있지 않습니다. 하나는 파이썬 패턴을 따르는 지, 하나는'Select'를 사용하여 새로운 열거 형을 만들 것이라고 생각하십니까? – Domi