IComparer - ошибка при сортировке - C#

Узнай цену своей работы

Формулировка задачи:

Вообщем нужно создать сортировку. вот кусок кода
Листинг программы
  1. public int CompareTo(TierDropDown obj)
  2. {
  3. if (obj == null)
  4. {
  5. return 1;
  6. }
  7. else
  8. {
  9. if (this.Name.Equals(obj.Name))
  10. {
  11. return 0;
  12. }
  13. else
  14. {
  15. return this.Name.CompareTo(obj.Name);
  16. }
  17. }
  18. }
вызываю его вот так
Листинг программы
  1. pResult.Sort();
И показывается вот такая ошибка : 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: ''. Вопрос, почему когда сортирует, он не понимает что вызвали один и тод же объект? и не пишет ноль? что не так в коде?

Решение задачи: «IComparer - ошибка при сортировке»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication26
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             List<MyClass> myList = new List<MyClass>()
  13.             {
  14.                 new MyClass{ID=2, Name="One"},
  15.                 new MyClass{ID=1, Name="Three"},
  16.                 new MyClass{ID=0, Name="Two"}
  17.             };
  18.  
  19.             Console.WriteLine("***** Unsorted List *****\n");
  20.  
  21.             foreach(MyClass mc in myList)
  22.             {
  23.                 Console.WriteLine(mc);
  24.             }
  25.  
  26.             myList.Sort();
  27.             Console.WriteLine("\n****** Sorted List *****\n");
  28.  
  29.             foreach (MyClass mc in myList)
  30.             {
  31.                 Console.WriteLine(mc);
  32.             }
  33.  
  34.             Console.ReadLine();
  35.         }
  36.     }
  37.     class MyClass:IComparable<MyClass>
  38.     {
  39.         public int ID { get; set; }
  40.         public string Name { get; set; }
  41.  
  42.         public int CompareTo(MyClass other)
  43.         {
  44.             if (this.ID > other.ID)
  45.                 return 1;
  46.             if (this.ID < other.ID)
  47.                 return -1;
  48.             else
  49.                 return 0;
  50.         }
  51.         public override string ToString()
  52.         {
  53.             return string.Format("ID: {0}, Name: {1}", ID, Name);
  54.         }
  55.     }
  56. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы