我想知道是否可以这样做,是否可以循环检查 ArrayList 是否已排序,如果不是,则显示一个消息框?
这是我尝试过的:
if (!aList.Sort)
{
MessageBox.Show("The list isn't 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;
}
}