Я написал следующий класс, который реализует IComparer:Array.sort с пользовательским IComparer интерфейсом
class CustomComparer : IComparer<string>
{
public int Compare(string x, string y)
{
int intX;
int intY;
if (int.TryParse(x, out intX) && int.TryParse(y, out intY)) //both numbers
{
intX.CompareTo(intY);
}
else if (!int.TryParse(x, out intX) && !int.TryParse(y, out intY)) //both letters
{
x.CompareTo(y);
}
else if (!int.TryParse(x, out intX) && int.TryParse(y, out intY)) //first is a letter, second a number
{
return -1;
}
else if (int.TryParse(x, out intX) && !int.TryParse(y, out intY)) //first is a number, second is a letter
{
return 1;
}
return 0;
}
}
Я не уверен ли я сделал все правильно, но я в настоящее время не в состоянии назвать. В моей программе у меня есть ArrayList, которую я пытаюсь назвать:
CustomComparer c = new CustomComparer()
myArrayList.Sort(c);
Что я делаю неправильно?
Это похоже на работу. Благодаря! – blawford