更正类对象列表中项的值的更正方法

时间:2013-07-05 19:55:49

标签: c# list class

鉴于这样的课程:

 public class Dinosaur
{
    public string Specie { get; set; }
    public int Age { get; set; }
    public int Weight { get; set; }
    public Point Location { get; set; }

    // Constructor
    public Dinosaur()
    {

    }

这样的清单:

        public static List<Dinosaur> Dinosaurs = new List<Dinosaur>();

更改列表中最后一项的值的正确方法是什么? 这会抛出一个错误(“'System.Collections.Generic.List.this [int]'的最佳重载方法匹配有一些无效的参数”):

Dinosaurs[Dinosaurs.Last()].Location.X = pixelMousePositionX;

一如既往,提前谢谢! Stackoverflow一直是这个项目的救星。

3 个答案:

答案 0 :(得分:9)

Dinosaurs.Last()已经返回最后一项,因此您根本不需要索引器。

Dinosaurs.Last().Location.X = pixelMousePositionX;
  

现在它抛出了这个错误:无法修改返回值   'DinosaurIsland.Dinosaur.Location'因为它不是变量

这是因为Point是结构而不是引用类型。所以你必须创建一个新点。

Point oldLocation = Dinosaurs.Last().Location;
Dinosaurs.Last().Location = new Point { X = pixelMousePositionX, Y = oldLocation.Y };

答案 1 :(得分:5)

Dinosaurs.Last()返回最后一项,而不是其索引,因此:

Dinosaurs.Last().Location.X = pixelMousePositionX;

如果你想通过索引来做,那么:

Dinosaurs[Dinosaurs.Count - 1].Location.X = pixelMousePositionX;

答案 2 :(得分:1)

鉴于你的方式,你必须通过它的索引来引用项目:

Dinosaurs[Dinosaurs.Count - 1].Location.X = pixelMousePositionX;

或者直接引用该对象:

Dinosaurs.Last().Location.X = pixelMousePositionX;