0

我对编程很陌生,并且正在学习 C#。第 4 周!

编写程序要求用户输入:

  • 朋友的名字
  • 电话
  • 出生月份
  • 出生年份。

创建为对象数组并使用 IComparable 启用对象比较。需要按字符串按字母顺序对对象进行排序,我认为除了获取要比较的字符串之外,我还有所有其余的代码。这是我所拥有的IComparable.CompareTo(Object o)

int IComparable.CompareTo(Object o)
{
    int returnVal;

    Friend temp = (Friend)o;
    if(this.Name > temp.Name)
        returnVal = 1;
    else
        if(this.Name < temp.Name)
            returnVal = -1;
        else returnVal = 0;
    return returnVal;
}

我在编译时收到的错误是:

CS0019 运算符'>' 不能应用于“字符串”和“字符串”类型的操作数。

教官帮不上什么忙,文字没有综合这种偶然性。

4

2 回答 2

3

只需委托给String.CompareTo

int IComparable.CompareTo(Object o) {
    Friend temp = (Friend)o;

    return this.Name.CompareTo(temp.Name);
}
于 2012-07-28T23:41:29.703 回答
0

这使用了一些您可能不习惯的语言功能,但确实使您更容易一些:

people = people.OrderBy(person => person.Name).ToList();

像这样使用:

var rnd = new Random();
var people = new List<Person>();
for (int i = 0; i < 10; i++)
    people.Add(new Person { Name = rnd.Next().ToString() });

//remember, this provides an alphabetical, not numerical ordering,
//because name is a string, not numerical in this example.
people = people.OrderBy(person => person.Name).ToList();

people.ForEach(person => Console.WriteLine(person.Name));
Console.ReadLine();

Google LINQ [并记得添加'使用 System.Linq;'] 和 Lambda。

于 2012-07-29T00:49:16.010 回答