C#有foreach oneliner吗?

Wow*_*owa 15 c# syntax foreach

我只是想知道C#中是否有foreach oneliner,就像if oneliner一样.(exp) ? then : else

Luk*_*keH 47

如果您正在处理数组,那么您可以使用内置的静态ForEach方法:

Array.ForEach(yourArray, x => Console.WriteLine(x));
Run Code Online (Sandbox Code Playgroud)

如果你正在处理a,List<T>那么你可以使用内置的ForEach实例方法:

yourList.ForEach(x => Console.WriteLine(x));
Run Code Online (Sandbox Code Playgroud)

没有任何内置功能可以对任何任意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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Domi 回答原因:https://blogs.msdn.microsoft.com/ericlippert/2009/05/18/foreach-vs-foreach/ (3认同)

ser*_*iol 7

想象一下,您有三个变量,并且您希望一次性设置它们的相同属性:

foreach (var item in new [] {labelA, labelB, labelC})
{
    item.Property= Value;
}
Run Code Online (Sandbox Code Playgroud)

这相当于做:

foreach (var item in new List<SomeType>(){labelA, labelB, labelC})
{
    item.Property= Value;
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 5

foreach可以使用 LINQ 扩展方法实现 line-liners。例如:

代替:

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

你可以:

var result = someCollection.Select(x => x.Title).ToList();
Run Code Online (Sandbox Code Playgroud)