我想写一些类似的东西:
(0 .. 7).ForEach(i => SomeMethod(i))
但要么我找不到正确的语法,要么这在 C# 中是不可能的。如果可以,请问正确的语法是什么?
我想写一些类似的东西:
(0 .. 7).ForEach(i => SomeMethod(i))
但要么我找不到正确的语法,要么这在 C# 中是不可能的。如果可以,请问正确的语法是什么?
您可以使用Enumerable.Range 方法
foreach (var i in Enumerable.Range(0, 7)) SomeMethod(i);
如果您按照@Richard 的建议添加 ForEach 扩展方法,只需执行以下操作:
Enumerable.Range(0, 7).ForEach(SomeMethod);
为了实现您所追求的,您需要添加虚幻且众所周知的 LINQForEach
语句。
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach(T item in source)
{
action(item);
}
}
用法:
Enumerable.Range(0, 7).ForEach(i => SomeMethod(i));
Enumerable.Range(0, 7).ForEach(i => Console.WriteLine(i.ToString());
Enumerable.Range(0, 7).ForEach(i =>
{
string oddEven = i % 2 == 0 ? "even" : "odd";
Console.WriteLine(string.Format("{0} is {1}", i, oddEven));
}
额外阅读
Enumerable.Range(0, 7).ToList().ForEach(i => whatever)
你需要ToList
,因为纯IEnumerable
没有ForEach
。(好吧,如果需要,您可以轻松定义自己的。)
或者Enumerable.Range(0, 7 + 1)
,如果你也想包括 7。
看一下Enumerable.Range();