2013-03-08 111 views
0

我想知道是否有可能做,如果我可以循环检查ArrayList是否排序,如果不是,显示一个消息框?检查ArrayList是否排序

这是我已经试过:

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

回答

4

Sort()是一种方法。我想你想要Sorted属性。

if (!aList.Sorted) 

请注意,如果没有列表框本身强制执行排序顺序,项目可能会“按升序排列”。如果您只想检查显示的中的所有项目是否为,则这是一个不同的问题。

编辑:要检查一个序列(无论是列表框中的项目还是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

错误“System.Collections.ArrayList”不包含“排序”的定义,并没有扩展方法“排序”接受第一个参数可以找到类型'System.Collections.ArrayList'(你是否缺少使用指令或程序集引用?) – 2013-03-08 03:16:39

+0

你会如何编码升序? – 2013-03-08 03:17:59

+1

@KevinChun:你说的是一个列表框,而不是'ArrayList'。如果你问的是'ArrayList',那就完全不同了。请在提问时注意准确。 – 2013-03-08 03:19:20