0

実行できるかどうか、ArrayListがソートされているかどうかを確認するためにループできるかどうか、そうでない場合はメッセージボックスを表示できるかどうか疑問に思っています。

これは私が試したものです:

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

1 に答える 1

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;
    }
}
于 2013-03-08T03:14:20.240 に答える