我有一个数组列表,我正在从我制作的另一种方法中复制它,但我只需要反转它并将最后一个值交换为第一个值。我曾考虑过这样做,但由于某种原因,Prepend它根本不起作用。RemoveAt正在工作。有没有替代我正在做的事情可以完成这项工作?
List<double> pointy = new List<double>
{
0,
FrameHeight-24,
FrameHeight-24+2,
FrameHeight-24+2,
FrameHeight-24+2-3,
FrameHeight-24+2-3,
FrameHeight-24+2-3+1,
FrameHeight-24+2-3+1+2,
FrameHeight-24+2-3+1+2,
FrameHeight-24+2-3+1,
FrameHeight-24+2-3,
FrameHeight-24+2-3,
FrameHeight-24+2,
FrameHeight-24+2,
FrameHeight-24+2+2,
FrameHeight,
FrameHeight,
0,
0
};
pointy.Prepend(pointy[(pointy.Count) - 1]).ToList();
pointy.RemoveAt((pointy.Count)-1);
pointy.Reverse();
Run Code Online (Sandbox Code Playgroud)
如果您研究文档,正如其他人链接的那样,您会发现 Prepend() 和 ToList() 与您想象的完全不同,特别是,在不使用返回的情况下调用 .ToList() 绝对没有意义价值。
相反,List 类上已经存在一个方法,它完全符合您的要求:
pointy.Insert(0, pointy[pointy.Count - 1]);
Run Code Online (Sandbox Code Playgroud)
或者
pointy.Insert(0, pointy.Last());
Run Code Online (Sandbox Code Playgroud)
完整方法是
public void ChangeList(List<double> arrayList)
{
arrayList.Insert(0, arrayList.Last());
arrayList.RemoveAt(arrayList.Count - 1);
arrayList.Reverse();
}
Run Code Online (Sandbox Code Playgroud)