Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
It should be a frequent scenario to sort the order of objects in a collection, such as ArrayList. ArrayList in c# provide a method named Sort(). But we need to let ArrayList know the detailed sorting algorithm.
There are two means to implement this:
1. Make the target class inheritted from IComparable interface, and provide CompareTo() method. IComparable interface comes from System namespace.
For example:
class UITestCase: IComparable
{
private int _sequenceno = 0;
public int SequenceNo
{
get
{
return _sequenceno;
}
set
{
_sequenceno = value;
}
}
......
// implement the IComparable interface, define the algorithm here
public Int32 CompareTo(object next)
{
UITestCase nextCase = (UITestCase)next;
return (this.SequenceNo.CompareTo(nextCase.SequenceNo));
}
} // class end.
When using ArrayList to store a group of UITestCase objects, we could simply call ArrayList.Sort() to sort all objects in it.
// get all test case entities, then make sort order
ArrayList caseList = new ArrayList();
foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories("*.tc"))
{
UITestCase testcase = new UITestCase(dir.FullName);
caseList.Add(testcase);
}
if (caseList.Count > 0)
{
caseList.Sort();
}
2. Create a class inherited from IComparer interface, then implement Compare(object x, object y) method just like IComparable's CompareTo(object next) method.
3. Write a special method to sort the order of a given ArrayList like what we will do in C language, I prefer this one because I think the codes writing in above two methods are not straightforward enough.