我正在寻找一个数组。您可以比较2个对象,它们将返回-1(这意味着对象应该在该对象之前),0对象是相同的或1并且对象应该在数组中的那个后面。我已经查找了多种订购数组的方法,但却无法找到解决方案。我希望有人可以帮助我解决这个问题。谢谢!
编辑: 这就是我试过的
public virtual void Add(NAW item)
{
_nawArray[ItemCount()] = item; //igonore this
for (int x = 0; x < _nawArray.Size; x++)
{
for (int y = 0; y < _nawArray.Size; y++)
{
if(_nawArray[x].CompareTo(_nawArray[y]) == 1){
//x should go on the place of y
} else if(_nawArray[x].CompareTo(_nawArray[y]) == -1){
//y should go on the place of x
}
}
}
}
ItemCount()获取Array中已使用位置的数量。 但是当ObjectX代替ObjectY时,我无法在ObjectY的位置设置ObjectX(除非我复制它,但这不是我需要的)。有人有想法吗?
答案 0 :(得分:3)
好吧,只需使用Array.Sort
:
https://msdn.microsoft.com/en-us/library/cxt053xf(v=vs.110).aspx
类似的东西:
MyType[] data = ...
...
Array.Sort(data, (left, right) => YourFunction(left, right));
答案 1 :(得分:1)
如果您的意思是要对数组进行排序,可以查看此页面,它可能会对您有所帮助:
https://msdn.microsoft.com/en-us/library/6tf1f0bc(v=vs.110).aspx
Array.Sort(yourArrayNameHere)
如果您的意思是其他任何内容,请在您的问题中分享并更准确。
答案 2 :(得分:1)
您需要使用Array.Sort(https://msdn.microsoft.com/en-us/library/6tf1f0bc(v=vs.110).aspx)
Array.Sort(someArray)
但是你需要在你的班级(https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx)
中实现IComparable接口示例:
class IntHolder : IComparable<IntHolder>
{
public int SomeInt { get; set; }
public int CompareTo(IntHolder other)
{
return SomeInt.CompareTo(other.SomeInt);
}
}