反转一个对象数组

时间:2014-01-21 07:00:43

标签: c# .net arrays

我有一个包含对象数组的静态类。

public static Waypoint[] AtoB
        {
            get
            {
                return new Waypoint[] {
                    new Waypoint(49.251f,-851.837f),
                    new Waypoint(66.7397f,-843.165f),
                    new Waypoint(77.8777f,-825.462f)
                };
            }
        }

现在我想创建另一个名为BtoA的Waypoint数组,它与AtoB相同,但顺序相反。如下所示:

public static Waypoint[] BtoA
    {
        get { return AtoB.Reverse(); }
    }

这可能吗?

2 个答案:

答案 0 :(得分:6)

您可以使用ToArray()分机号码将反向序列保存到新阵列:

return AtoB.Reverse().ToArray();

在这种情况下,你将在内存中有两个数组 - 你将有AtoB属性返回的数组,然后你将为该数组创建反向迭代器,最后你将反向序列保存到全新数组。

或者您可以使用Array.Reverse(array)反转原始数组:

var array = AtoB;
Array.Reverse(array);
return array;

在这种情况下,您将拥有在AtoB属性中创建的单个数组 - 您只需反转该数组实例的项目。

注意:您的代码无效,因为Reverse()扩展名创建的ReverseIterator不是数组 - 它的类型为IEnumerable<Waypoint>。因此,您还可以选择将BtoA属性的类型更改为IEnumerable<Waypoint>

答案 1 :(得分:0)

好吧,使用Enumerable.Reverse功能:

public static Waypoint[] BtoA
{
    get { AtoB.Reverse().ToArray();; 
}

不要忘记添加using语句:

using System.Linq