我有这个 ToString
方法用于写出对象。我正在尝试将 for
循环转换为 foreach
循环。
不使用 LINQ。
任何指针将不胜感激。
public override string ToString()
{
StringBuilder output = new StringBuilder();
output.AppendFormat("{0}", count);
for (var index = 0; index < total; index++)
{
output.AppendFormat("{0}{1}{2} ", array[index], array[index].GetInfo,
string.Join(" ", array[index].Content(index)),
);
}
return output.ToString();
}
最佳答案
这是基于您当前代码的重构。
public override string ToString() {
var output = new StringBuilder();
output.AppendFormat("{0}", count);
var index = 0;
foreach (var item in array) {
if (item!=null) {
output.AppendFormat("{0}{1}{2} ", item, item.GetInfo,
string.Join(" ", item.Content(index++)),
);
}
}
return output.ToString();
}
使用 linq,您可以使用索引 Select
执行相同的操作,而无需直接调用在引擎盖下使用的 foreach
public override string ToString() {
var output = new StringBuilder();
output.AppendFormat("{0}", count);
array.Select((item, index) =>
output.AppendFormat("{0}{1}{2} ", item, item.GetInfo,
string.Join(" ", item.Content(index)),
)
);
return output.ToString();
}
关于c# - 将 for 循环转换为带索引的 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693059/