C#订购数组

时间:2016-09-05 20:46:04

标签: c# arrays

我正在寻找一个数组。您可以比较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(除非我复制它,但这不是我需要的)。有人有想法吗?

3 个答案:

答案 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);
    }
}