【问题标题】:C# List<string> only prints last elementC# List<string> 只打印最后一个元素
【发布时间】:2019-03-16 12:18:20
【问题描述】:

我是 C# 新手,感谢我能得到的所有帮助。 我有这个问题,我想打印列表中的所有元素,但我只得到最后一个元素作为输出。如果我使用“+=”而不是“=”,我会将所有元素作为一行,这是我不喜欢的。

如何在自己的行上打印所有元素?

代码:

  public override string ToString()
  {        
        string combindedstring = string.Empty;

        foreach (string array in foodDescriptionList)
        {
            combindedstring = array;
        }      

        return combindedstring;
    }

我也是这个网站的新手。如果我的问题有任何不妥之处,请告诉我。感谢所有帮助:)。

【问题讨论】:

  • 试试这个:combindedstring += array;
  • 当我使用它时,我将所有元素放在一行中。我想在自己的行上显示不同的元素。
  • 您是否正在实施自己的收藏?
  • 所有响应都比这更好,但 str += "\n" + newStr 应该适用于您的代码。但是检查第一个没有新行的元素很复杂。

标签: c# .net string visual-studio


【解决方案1】:

您可以使用string.Join() 并一起避免循环。

使用下面的选项将每个条目放在自己的行中(使用Environment.NewLine):

// return list separated by new line character
public override string ToString()
{
    return string.Join(Environment.NewLine, foodDescriptionList);
}

下面的代码是另一种选择,它将使用, 分隔每个项目:

// return list separated by ,
public override string ToString()
{
    return string.Join(", ", foodDescriptionList);
}

string.Join 上面的重载中有两个参数:string.Join(separator, array)。微软文档是here

【讨论】:

  • 感谢您的回答!如果第一个替代方案仍将元素打印为一行。我可以假设问题出在我的代码中的其他地方吗?
  • @wixner 你如何显示数据? foodDescriptionList 中有多少项目?如果列表中有多个元素,则应在多行上输出
  • 我使用列表框。而且元素的数量不同。
  • 一个列表框有一个Items 集合。您需要使用您的数组/列表填充集合。一种方法是listbox.DataSource = foodDescriptionList
  • 如果我的列表在单独的类中,这将如何工作?感谢您的耐心等待。
【解决方案2】:

问题是您在每次循环迭代中都会覆盖前一个值,因此最后您只从集合中获取最后一个值。相反,请使用 StringBuilder 并将每个元素附加到它。

public override string ToString()
{        
    StringBuilder sb = new StringBuilder();

    foreach (string array in foodDescriptionList)
    {
        sb.AppendLine(array); //sb.AppendJoin(", ", array); if you want to add separator
    }      

    return sb.ToString();
}

有很多解决方案,但这一个强调了您的代码存在的问题。

【讨论】:

    【解决方案3】:

    您可以使用 += 并在末尾添加新行,如下所示:

    组合字符串 += 数组 + Environment.NewLine;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多