我非常喜欢编程,而且正在学习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运营商'&gt;'不能应用于'string'和'string'类型的操作数。
讲师帮助不大,文字没有合成这种意外情况。
答案 0 :(得分:3)
只需委托给String.CompareTo
:
int IComparable.CompareTo(Object o) {
Friend temp = (Friend)o;
return this.Name.CompareTo(temp.Name);
}
答案 1 :(得分: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 [并记得添加'using System.Linq;']和Lambda's。