2013-03-08 2 views
0

Мне интересно, если это возможно, и если бы я мог зацикливаться, чтобы проверить, отсортирован ли ArrayList, а если нет, отобразите окно сообщения?проверка сортировки ArrayList

Это то, что я пробовал:

if (!aList.Sort) 
{ 
    MessageBox.Show("The list isn't sorted"); 
} 

ответ

4

Sort() является метод. Я думаю, вы хотите иметь Sorted.

if (!aList.Sorted) 

Обратите внимание, что это возможно для деталей, чтобы быть «в порядке возрастания» без самого ListBox исполнившего порядок сортировки. Если вы хотите просто проверить, все ли отображаемые предметы : в порядке возрастания, это другое дело.

РЕДАКТИРОВАТЬ: Чтобы проверить, упорядочена ли последовательность элементов (в том числе элементы в списке или элементы в ArrayList, которые могут оказаться тем, что вас интересует), вам просто нужно перебирать их, и сравнить каждый элемент с предыдущим. Это легче сделать с помощью универсальной коллекции, но ...

public static bool IsSorted(IEnumerable sequence) 
{ 
    // Now assuming that list 
    using (IEnumerator iterator = sequence.GetEnumerator()) 
    { 
     if (!iterator.MoveNext()) 
     { 
      // An empty sequence is always sorted 
      return true; 
     } 
     IComparable previous = (IComparable) iterator.Current; 
     while (iterator.MoveNext()) 
     { 
      IComparable next = (IComparable) iterator.Current; 
      if (next.CompareTo(previous) < 0) 
      { 
       return false; 
      } 
      previous = next; 
     } 
     return true; 
    } 
} 
+0

Ошибка \t \t 1 «System.Collections.ArrayList» не содержит определение для «Сортировано» и не метода расширения «рассортированных» принимающего первого аргумента типа «System.Collections.ArrayList» можно найти (вам не хватает директивы using или ссылки на сборку?) –

+0

Как бы вы закодировали восходящий порядок? –

+1

@KevinChun: Вы сказали список, а не 'ArrayList'. Если вы спрашиваете о 'ArrayList', это совсем другое. Будьте осторожны, чтобы быть точным, когда вы задаете вопросы. –

Смежные вопросы