我想向其他班级显示返回的列表。 我通过传递auto属性类的对象从方法返回列表,但无法显示它... 这是代码。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
public List<Person> LoadData() {
List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "Sara", LastName = "John", Age = 30 });
people.Add(new Person { FirstName = "Tim", LastName = "Joe", Age = 26 });
people.Add(new Person { FirstName = "James", LastName = "ted", Age = 29 });
return people;
}
//我要显示代码的另一侧是
class Program
{
static void Main(string[] args)
{
var display = new Person();
var p = new List<Person>();
p = display.LoadData();
foreach (var item in p)
{
Console.WriteLine(p);
}
}
}
我没有收到任何错误,但没有显示数据, 它显示
System.Generice.Collections.MyConsoleApplication。
答案 0 :(得分:4)
Console.WriteLine(item.FirstName);
不是Person
,并且string
不会产生您想要的结果。
所以有两种方法可以解决:
可以这样写:
Console.WriteLine(p);
或者只重写您的Person类的foreach (var item in p)
{
Console.WriteLine(string.Format("{0} {1}, {2}", item.FirstName, item.LastName, item.Age));
}
方法:
ToString()
在这种情况下(第二种选择),您自己的代码将起作用:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public override string ToString()
{
return string.Format("{0} {1}, {2}", FirstName, LastName, Age);
}
}
答案 1 :(得分:0)
tour Person类不知道如何打印字符串。您需要覆盖ToString()
public class Person
{
public override string ToString()
{
return $"FirstName = {this.Firstname} \t\t LastName = {this.LastName} \t\t Age = {this.Age}";
}
}
现在您的foreach将使用覆盖功能打印
foreach (var item in p)
{
Console.WriteLine(p);
}
答案 2 :(得分:0)
尝试使用:
bind-address = 192.168.0.225
答案 3 :(得分:0)
其他人已经提到了Object.ToString问题。代码中的另一个问题是for循环试图打印集合而不是项目
foreach (var item in p) { Console.WriteLine(p); }
应该使用非p的项目
foreach(p中的可变项){Console.WriteLine( item .ToString()); }