如何使用Display()方法或其替代方法?

时间:2018-07-27 10:16:28

标签: c# .net console-application

我创建了一个程序,该程序使用户可以创建包含列表的联系人列表,包括姓名,电话号码和生日。我在Scans方法中遇到了问题,该方法显示创建的联系人。如果没有Display()方法,该程序只能在允许用户创建联系人列表的地方工作。有人可以帮我吗?我想按字母顺序显示数组内部的内容。这是我的代码如下:

Display()

1 个答案:

答案 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中的一个。您可以做三件事:

  1. IComparable.CompareTo中用于比较的变量从属性Name更改为name
  2. 实施属性Name如下:

    public string Name 
    {
       get { return name; }
       private set { name = value; }
    }
    
  3. 使用自动实现的属性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;
    }