以下是类定义的片段:
public class Dinosaur
{
public string Specie { get; set; }
public int Age { get; set; }
public List<System.Windows.Point> Location { get; set; }
// Constructor
public Dinosaur()
{
}
}
现在我们创建一个列表:
public static List<Dinosaur> Dinosaurs = new List<Dinosaur>();
现在我们要创建并添加一个点列表。
List<System.Windows.Point> Location = new List<System.Windows.Point>();
for (int y = (int)pt.Y - 5; y <= (int)pt.Y + 5; y++)
for (int x = (int)pt.X - 5; x <= (int)pt.X + 5; x++)
Location.Add (new System.Windows.Point (x, y ));
Dinosaurs.Last().Location.AddRange(Location);
最后一行是抛出空指针异常。这很奇怪,因为Location有121个好的值。
有什么想法吗?
顺便说一句,感谢Daniel和Tim的帮助。我肯定会在我的博客(Dinosaur-Island.com)中公开感谢你。
你们是最伟大的人!
答案 0 :(得分:1)
var points =
from d in Dinosaurs
select d.Location;
根据您的问题,我不确定这是否是您所要求的。
编辑: 好的,我可能会在恐龙类的构造函数中设置List。然后我想在其中添加一系列点数,我会有这个代码。
IEnumerable<Point> points = getPointsFromSomewhere();
myDinosaurObject.Location.AddRange(points);
答案 1 :(得分:1)
您的列表Location
不应该是静态的,因为您正在调用Last()方法。
public class Dinosaur
{
public string Specie { get; set; }
public int Age { get; set; }
public List<System.Windows.Point> Location { get; set; } // this shouldn't be static
// Constructor
public Dinosaur()
{
}
}
public static List<Dinosaur> Dinosaurs = new List<Dinosaur>(); // your list of dinosaurs somewhere
List<System.Windows.Point> yourListOfPoints = new List<System.Windows.Point>(); // create a new list of points to add
yourListOfPoints.Add(new Point { X = pixelMousePositionX, Y = oldLocation.Y }); // add some points to list
Dinosaurs.Last().Location.AddRange(yourListOfPoints); // select last dinosaur from list and assign your list of points to it's location property
修改强>
在实际使用之前,您必须在构造函数中创建一个列表:
public List<System.Windows.Point> Location { get; set; }
// Constructor
public Dinosaur()
{
Location = new List<System.Windows.Points>();
}
或替换:
Dinosaurs.Last().Location.AddRange(Location);
使用:
Dinosaurs.Last().Location = Location;
答案 2 :(得分:1)
假设问题是关于你对List<Point> Locations
的初始化或添加,除了上述内容之外(虽然我不相信在这种情况下更可取),你可以使用collection initialiser: < / p>
List<Point> Locations = new List<Point>()
{
new Point(1, 2),
new Point(3, 4),
new Point(5, 6),
new Point(1, 1)
};
我会选择AddRange
选项。