我正在尝试在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);
答案 0 :(得分:1)
String.Join需要一个字符串列表。您现在正在提供全名列表。
您可以尝试:
String.Join(",", namesList.Select(m => m.name).ToArray());
如果您想同时使用姓名和姓氏,则只需将其附加:
String.Join(",", namesList.Select(m => m.name + m.surname).ToArray());
答案 1 :(得分:1)
使用替代功能使字符串美化
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
答案 2 :(得分:0)
您正在将通用列表作为 String.Join()的第二个参数传递,同时它接受字符串数组。
所以不是
txt_names.Text = String.Join(" ", namesList);
txt_names.Text = String.Join(" ", namesList.Select(x=> $"{x.Name} {x.SurName}");
,其余的一切都会好起来的。