鉴于这样的课程:
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一直是这个项目的救星。
答案 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;