鉴于这样一个类:
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()
{
}
Run Code Online (Sandbox Code Playgroud)
和这样的列表:
public static List<Dinosaur> Dinosaurs = new List<Dinosaur>();
Run Code Online (Sandbox Code Playgroud)
更改列表中最后一项的值的正确方法是什么?这会抛出一个错误("'System.Collections.Generic.List.this [int]'的最佳重载方法匹配有一些无效的参数"):
Dinosaurs[Dinosaurs.Last()].Location.X = pixelMousePositionX;
Run Code Online (Sandbox Code Playgroud)
一如既往,提前谢谢!Stackoverflow一直是这个项目的救命稻草.
Dinosaurs.Last() 返回已经是最后一项,因此您根本不需要索引器.
Dinosaurs.Last().Location.X = pixelMousePositionX;
Run Code Online (Sandbox Code Playgroud)
现在它抛出了这个错误:无法修改'DinosaurIsland.Dinosaur.Location'的返回值,因为它不是变量
这是因为它Point是结构而不是引用类型.所以你必须创建一个新点.
Point oldLocation = Dinosaurs.Last().Location;
Dinosaurs.Last().Location = new Point { X = pixelMousePositionX, Y = oldLocation.Y };
Run Code Online (Sandbox Code Playgroud)
Dinosaurs.Last() 返回最后一项,而不是它的索引,所以这样:
Dinosaurs.Last().Location.X = pixelMousePositionX;
Run Code Online (Sandbox Code Playgroud)
如果你想通过索引来做,那么:
Dinosaurs[Dinosaurs.Count - 1].Location.X = pixelMousePositionX;
Run Code Online (Sandbox Code Playgroud)