c#数组排序

本文关键字:数组排序 | 更新日期: 2023-09-27 18:05:41

我想订购一个数组。你可以比较两个对象,它们将返回-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()获取数组中已使用位置的数量。但是当ObjectX进入ObjectY的位置时,我不能将ObjectX设置在ObjectY的位置上(除非我复制它,但这不是我需要的)。有人知道吗?

c#数组排序

那就用Array.Sort:

https://msdn.microsoft.com/en-us/library/cxt053xf (v = vs.110) . aspx

像这样:

   MyType[] data = ...
   ...
   Array.Sort(data, (left, right) => YourFunction(left, right));

如果你的意思是你想排序你的数组,你可以看看这个页面,它可能会帮助你:
https://msdn.microsoft.com/en-us/library/6tf1f0bc (v = vs.110) . aspx

Array.Sort(yourArrayNameHere)
如果你有其他的意思,请分享你的问题,并更准确。

您需要使用Array。排序(https://msdn.microsoft.com/en-us/library/6tf1f0bc (v = vs.110) . aspx)

Array.Sort(someArray)

但是你需要在你的类中实现接口IComparable (https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx)

的例子:

class IntHolder : IComparable<IntHolder>
{
    public int SomeInt { get; set; }
    public int CompareTo(IntHolder  other)
    {
        return SomeInt.CompareTo(other.SomeInt);
    }
}