IComparer - ошибка при сортировке - C#
Формулировка задачи:
Вообщем нужно создать сортировку. вот кусок кода
вызываю его вот так
И показывается вот такая ошибка :
IComparer (or the IComparable methods it relies upon) did not return zero when Array.Sort called x. CompareTo(x). x: '' x's type: 'TierDropDown' The IComparer: ''.
Вопрос, почему когда сортирует, он не понимает что вызвали один и тод же объект? и не пишет ноль? что не так в коде?
Листинг программы
- public int CompareTo(TierDropDown obj)
- {
- if (obj == null)
- {
- return 1;
- }
- else
- {
- if (this.Name.Equals(obj.Name))
- {
- return 0;
- }
- else
- {
- return this.Name.CompareTo(obj.Name);
- }
- }
- }
Листинг программы
- pResult.Sort();
Решение задачи: «IComparer - ошибка при сортировке»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication26
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<MyClass> myList = new List<MyClass>()
- {
- new MyClass{ID=2, Name="One"},
- new MyClass{ID=1, Name="Three"},
- new MyClass{ID=0, Name="Two"}
- };
- Console.WriteLine("***** Unsorted List *****\n");
- foreach(MyClass mc in myList)
- {
- Console.WriteLine(mc);
- }
- myList.Sort();
- Console.WriteLine("\n****** Sorted List *****\n");
- foreach (MyClass mc in myList)
- {
- Console.WriteLine(mc);
- }
- Console.ReadLine();
- }
- }
- class MyClass:IComparable<MyClass>
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public int CompareTo(MyClass other)
- {
- if (this.ID > other.ID)
- return 1;
- if (this.ID < other.ID)
- return -1;
- else
- return 0;
- }
- public override string ToString()
- {
- return string.Format("ID: {0}, Name: {1}", ID, Name);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д