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

本文关键字:方法 对象 列表 | 更新日期: 2023-09-27 18:21:18

给定这样的类:

 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是这个项目的救命稻草。

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

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

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

现在它抛出了以下错误:无法修改的返回值"恐龙岛。恐龙。位置",因为它不是一个可变的

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

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

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

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

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

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

考虑到你的操作方式,你必须通过它的索引来引用项目:

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

或者直接引用对象:

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