c# - 将 for 循环转换为带索引的 foreach

标签 c# for-loop foreach tostring

我有这个 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/

相关文章:

arrays - 对于范围内的每个单元格,将单元格值添加到数组 - IF 条件满足

java - 最大行中的最小元素

c# - 按钮命令绑定(bind)不起作用

创建一个包含 100 个节点的链表,每个节点包含一个随机数 C

python - 如何找到字典和列表之间的匹配项以从匹配项创建新列表?

r - 启动 Amazon EC2 集群以用作 foreach 后端的最简单方法

c# - 区域注册在 MVC Razor 中不起作用

c# - 是否可以在 MVC 5 Controller 中的一个操作上禁用身份验证过滤器?

c# - 占位符可见始终为 false

actionscript-3 - 在AS3中在循环中或循环前声明变量?