2013-03-08 100 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