我有一个叫carroms的班。当我创建它的对象时,没有错误。但是,当我创建一个carroms数组时,会抛出这个异常:
System.Reflection.TargetInvocationException类型的未处理异常发生在PresentationFramework.dll中 附加信息:调用的目标引发了异常。
我的carroms类代码:
class carroms
{
private bool player;
public bool checkPlayer
{
get { return player; }
set { player = value; }
}
private Point center;
public Point carromCenter
{
get { return center; }
set { center = value; }
}
private Point[] points;
public Point[] carromPoints
{
get { return points; }
set { points = value; }
}
private double width;
public double carromWidth
{
get { return width; }
set { width = value;
}
}
private double height;
public double carromHeight
{
get { return height; }
set { height = value; }
}
public carroms()
{
points = new Point[370];
}
public Ellipse draw()
{
Ellipse myellipse = new Ellipse();
myellipse.Height = carromHeight;
myellipse.Width = carromWidth;
if (checkPlayer == true)
{
myellipse.Fill = Brushes.Black;
}
else
{
myellipse.Fill = Brushes.Beige;
}
return myellipse;
}
}
以及我创建对象的代码:
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100;
mycarroms[0].carromWidth = 100;
mycanvas.Children.Add(mycarroms[0].draw());
发布于 2013-12-14 08:05:17
您正在创建一个数组,但all items added in array are still null
除外。
Initialize them first
,然后只有您可以访问它。问题就在这里-
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0].carromHeight = 100; <-- mycarroms[0] will be null
应该是-
Random randi = new Random();
carroms[] mycarroms = new carroms[5];
mycarroms[0] = new carroms();
mycarroms[0].carromHeight = 100;
或者你可以用array initializer
初始化它-
Random randi = new Random();
carroms[] mycarroms = new carroms[5]
{new carroms(), new carroms(), new carroms(), new carroms(), new carroms()};
mycarroms[0].carromHeight = 100;
发布于 2013-12-14 08:27:02
想要添加一些东西,不要被TargetInvocationException吓倒,因为它不能提供太多的信息。您应该看到内部异常,以获得根本原因。InnerException可以是AggregateException类型,在这种情况下,您需要进一步深入了解所有异常细节。
https://stackoverflow.com/questions/20580955
复制相似问题