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

C# 需要帮助在文本框中显示列表的内容吗,c#,list,C#,List,我试图在windows窗体应用程序文本框中显示10个人的姓名。最后一行代码给出了以下两个错误: 与“string.Join(string,string[])”匹配的最佳重载方法具有一些无效参数 参数2:无法从“System.Collections.Generic.List”转换为“string[]” 有人能解释一下错误以及如何修复它们吗 public class FullName { public string name; public string surname; } in

我试图在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);
公共类全名
{
公共字符串名称;
公共字符串姓氏;
}
int i;
列表名称列表=新列表();
对于(i=0;i<10;i++)
{
添加(新全名{name=“John”,姓氏=“Adams”});
}
txt_names.Text=String.Join(“,名称列表);

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()方法后,可以调用类来打印它

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));

您正在将泛型列表作为第二个参数传递给String.Join(),而它接受字符串数组

因此,与其
txt_names.Text=String.Join(“,名称列表)

您可以通过使用简单的LINQ扩展方法来纠正这一点

txt_names.Text=String.Join(“,namesList.Select(x=>$”{x.Name}{x.nam姓氏}”);


其余的就可以了。

您正在尝试传递
FullName
对象的列表。
string.Join()
需要
string
对象。您可以执行类似
string.Join(“,namesList.Select(n=>$”{n.name}{n.names})的操作
使之生效。谢谢,非常有用。谢谢,非常有用。谢谢,非常有用。
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith
John Smith