Сортировка List: "ошибка при сравнении двух элементов массива." - C#

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

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

Имеется примерно такой код:
Листинг программы
  1. struct aBox
  2. {
  3. public int index;
  4. public double value;
  5. }
  6. List<Box>.sort()
Сортировка говорит "ошибка при сравнении двух элементов массива." Как правильно сделать сортировку по value? Посмотрел кое-что на форуме, попытался сделать так
Листинг программы
  1. static double MyComparer(activeSpell x, activeSpell y)
  2. {
  3. return x.value - y.value;
  4. }
  5. List<Box>.sort(MyComparer);
Но VS пишет неправильный возвращаемый тип.

Решение задачи: «Сортировка List: "ошибка при сравнении двух элементов массива."»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace SortingTest
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             List<Test> testList = new List<Test>
  13.             {
  14.                 new Test(){intValue=1, stringValue="One"},
  15.                 new Test(){intValue=5, stringValue="Seven"},
  16.                 new Test(){intValue=0, stringValue="Six"},
  17.                 new Test(){intValue=3, stringValue="Five"},
  18.                 new Test(){intValue=4, stringValue="One"}
  19.             };
  20.  
  21.             //Простой вывод элементов листа
  22.             foreach (Test t in testList)
  23.             {
  24.                 Console.WriteLine(t);
  25.             }
  26.  
  27.             //Сортируем через метод Sort по значению свойства intValue
  28.             testList.Sort();
  29.  
  30.             Console.WriteLine();
  31.             //Вывод отсортированного
  32.             foreach (Test t in testList)
  33.             {
  34.                 Console.WriteLine(t);
  35.             }
  36.  
  37.             //Сортируем по свойству stringValue через дополнительный класс-сортировщик
  38.             testList.Sort(new TestComparer());
  39.  
  40.             Console.WriteLine();
  41.             //Вывод отсортированного
  42.             foreach (Test t in testList)
  43.             {
  44.                 Console.WriteLine(t);
  45.             }
  46.  
  47.             Console.ReadLine();
  48.         }
  49.     }
  50.     public class Test:IComparable<Test>
  51.     {
  52.         public int intValue { get; set; }
  53.         public string stringValue { get; set; }
  54.  
  55.         public int CompareTo(Test other)
  56.         {
  57.             if (this.intValue > other.intValue)
  58.                 return 1;
  59.             if (this.intValue < other.intValue)
  60.                 return -1;
  61.             else
  62.                 return 0;
  63.         }
  64.  
  65.         public override string ToString()
  66.         {
  67.             return string.Format("intValue: {0}, stringValue: {1}", intValue, stringValue);
  68.         }
  69.     }
  70.     public class TestComparer : IComparer<Test>
  71.     {
  72.         public int Compare(Test x, Test y)
  73.         {
  74.             if (x.stringValue.Length >  y.stringValue.Length)
  75.                 return 1;
  76.             if (x.stringValue.Length < y.stringValue.Length)
  77.                 return -1;
  78.             else
  79.                 return 0;
  80.         }
  81.     }
  82. }

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


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

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

15   голосов , оценка 3.867 из 5

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

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

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