我创建了一个程序,该程序使用户可以创建包含列表的联系人列表,包括姓名,电话号码和生日。我在Scans
方法中遇到了问题,该方法显示创建的联系人。如果没有Display()
方法,该程序只能在允许用户创建联系人列表的地方工作。有人可以帮我吗?我想按字母顺序显示数组内部的内容。这是我的代码如下:
Display()
答案 0 :(得分:2)
我找不到Display
方法的实现,但是我认为您需要重写ToString()
类的Friend
方法:
public override string ToString()
{
return string.Format("Name: {0}; Phone: {1}; BirthDay: {2}", name, phone, bDay);
}
,然后使用Console.WriteLine
打印内容:
for (i = 0; i < list.Length; ++i)
{
Console.WriteLine(list[i]); //same as Console.WriteLine(list[i].ToString())
}
以后编辑
关于字母排序,IComparable.CompareTo
方法不起作用,因为您比较了自动实现的属性Name
,该属性对包含名称的name
变量没有任何引用Friend
中的一个。您可以做三件事:
IComparable.CompareTo
中用于比较的变量从属性Name
更改为name
; 实施属性Name
如下:
public string Name
{
get { return name; }
private set { name = value; }
}
使用自动实现的属性Name
并忽略“ name”变量:
public Friend(string name, int phone, int bDay)
{
this.Name= name;
this.phone = phone;
this.bDay = bDay;
}
public string Name { get; private set; }
另一件事是您将Name属性用作一个int,但它应该包含一个字符串。您可能需要使用以下方法更改IComparable.CompareTo
方法以比较两个字符串:
int IComparable.CompareTo(object o)
{
int returnVal;
Friend temp = (Friend)o;
returnVal = this.Name.CompareTo(temp.name);
return returnVal;
}