繁体   English   中英

需要帮助以在文本框中显示列表的内容

[英]Need help to display the contents of a list in a textbox

我试图在Windows窗体应用程序文本框中显示10个人的名字。 代码的最后一行给了我以下两个错误:

'string.Join(string,string [])'的最佳重载方法匹配具有一些无效的参数。

参数2:无法从“ System.Collections.Generic.List”转换为“ string []”。

有人可以解释这些错误以及如何解决这些错误吗?

public class FullName
{
    public string name;
    public string surname;
}

int i;
List<FullName> namesList = new List<FullName>();

for (i = 0; i < 10; i++)
{
    namesList.Add(new FullName { name = "John", surname = "Adams" });
}

txt_names.Text = String.Join(" ", namesList);

String.Join期望要加入的字符串列表。 您现在正在提供全名列表。

你可以试试:

String.Join(",", namesList.Select(m => m.name).ToArray());

如果您想同时使用名字和姓氏,则可以简单地附加它:

String.Join(",", namesList.Select(m => m.name + m.surname).ToArray());

使用覆盖使字符串美化

public class FullName
{
    public String Name { get; set; }
    public String SurName { get; set; }

    public override string ToString()
    {
        return String.Format("{0} {1}", Name, SurName);
    }
}

覆盖ToString()方法后,您可以调用class进行打印。

List<FullName> Names = new List<FullName>();
for ( int i = 0; i < 10; i++ )
{
     Names.Add(new FullName() { Name = "John", SurName = "Smith" });
}
Console.WriteLine(String.Join("\r\n", Names));

结果>

John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith

您正在将通用列表作为String.Join()的第二个参数传递,同时它接受字符串数组。

所以代替

txt_names.Text = String.Join(" ", namesList);

您可以使用简单的LINQ扩展方法来更正此问题。

txt_names.Text = String.Join(" ", namesList.Select(x=> $"{x.Name} {x.SurName}");

其余的一切都会好起来的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM