我有一个自定义通用数组/容器,它有一个排序方法:
public void Sort()
{
for (int i = 0; i < Count; i++)
{
int min = i;
for (int j = i + 1; j < Count; j++)
if (Items[j].CompareTo(Items[min]) < 0)
min = j;
if (min == i) continue;
T temp = Items[i];
Items[i] = Items[min];
Items[min] = temp;
}
}
Run Code Online (Sandbox Code Playgroud)
Items是T对象的数组.T实现IComparable并具有CompareTo方法:
public int CompareTo(object obj)
{
if (!(obj is Player))
return -1;
Player player = (Player)obj;
if (Name.CompareTo(player.Name) < 0)
return -1;
else if (Name.CompareTo(player.Name) == 0)
return LastName.CompareTo(player.LastName);
else
return 1;
}
Run Code Online (Sandbox Code Playgroud)
Player类有3个属性:Name,LastName和Score.这可以很好地按名称和姓氏对元素进行排序,但现在我需要另一个应按分数排序的容器(第三个属性).如何在不使用List和内置OrderBy,Sort方法的情况下实现两种不同的比较方法?
是否有可能以某种方式将类属性传递给Sort方法?
Container<Player> sortedByName = playerList.Sort(Name, LastName);
Container<Player> sortedByScore = playerList.Sort(Score);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |