Edw*_*uay 2 c# iteration foreach
在迭代一个foreach循环时,是否有更优雅的方式对第一个和最后一个项进行操作,而不是每次递增一个单独的计数器并进行检查?
例如,以下代码输出:
>>> [line1], [line2], [line3], [line4] <<<
Run Code Online (Sandbox Code Playgroud)
这需要知道你何时对第一个和最后一个项目采取行动.现在在C#3/C#4中有更优雅的方法吗?似乎我可以使用.Last()或.First()或类似的东西.
using System;
using System.Collections.Generic;
using System.Text;
namespace TestForNext29343
{
class Program
{
static void Main(string[] args)
{
StringBuilder sb = new StringBuilder();
List<string> lines = new List<string>
{
"line1",
"line2",
"line3",
"line4"
};
int index = 0;
foreach (var line in lines)
{
if (index == 0)
sb.Append(">>> ");
sb.Append("[" + line + "]");
if (index < lines.Count - 1)
sb.Append(", ");
else
sb.Append(" <<<");
index++;
}
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在不进行迭代的情况下完成当前示例.
Console.WriteLine(">>> " + String.Join(lines, ", ") + " <<<);
Run Code Online (Sandbox Code Playgroud)
如果您只是迭代我发现更容易用常规for循环替换它并检查边界.
for(int i=0; i<list.count; i++)
{
if(i == 0)
//First one
else if(i == list.count -1)
//Last one
}
Run Code Online (Sandbox Code Playgroud)
它比使用.First()和.Last()扩展方法快得多.此外,如果您的列表中有两个项目,相同(字符串)值与Last或First相比将不起作用.
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |