以下结果是NullReferenceException。它告诉我“drawObjs.Add(drawObj);” - 你调用的对象是空的。我不明白为什么这不是设置为实例?
列表:
List<drawObject> drawObjs;
添加到列表中的方法:
public void createDrawObj()
{
drawObject drawObj = new drawObject(100,100,100,100,10);
drawObjs.Add(drawObj);
}
班级本身:
class drawObject
{
float _posX;
float _posY;
float _sizeX;
float _sizeY;
float _cr;
public drawObject(float posX, float posY, float sizeX, float sizeY, float cr)
{
_posX = posX;
_posY = posY;
_sizeX = sizeX;
_sizeY = sizeY;
}
public GraphicsPath objPath()
{
GraphicsPath Path = new GraphicsPath();
Path.AddLine(_posX + _cr, _posY, _posX + _sizeX - (_cr * 2), _posY);
Path.AddArc(_posX + _sizeX - (_cr * 2), _posY, _cr * 2, _cr * 2, 270, 90);
Path.AddLine(_posX + _sizeX, _posY + _cr, _posX + _sizeX, _posY + _sizeY - (_cr * 2));
Path.AddArc(_posX + _sizeX - (_cr * 2), _posY + _sizeY - (_cr * 2), _cr * 2, _cr * 2, 0, 90);
Path.AddLine(_posX + _sizeX - (_cr * 2), _posY + _sizeY, _posX + _cr, _posY + _sizeY);
Path.AddArc(_posX, _posY + _sizeY - (_cr * 2), _cr * 2, _cr * 2, 90, 90);
Path.AddLine(_posX, _posY + _sizeY - (_cr * 2), _posX, _posY + _cr);
Path.AddArc(_posX, _posY, _cr * 2, _cr * 2, 180, 90);
Path.CloseFigure();
return Path;
}
public LinearGradientBrush objBrush(int objColor)
{
LinearGradientBrush lgb;
if (objColor == 1)
{
lgb = new LinearGradientBrush(new PointF(_posX + (_sizeX / 2), _posY), new PointF(_posX + (_sizeX / 2), _posY + _sizeY), Color.RosyBrown, Color.Red);
}
else
{
lgb = new LinearGradientBrush(new PointF(_posX + (_sizeX / 2), _posY), new PointF(_posX + (_sizeX / 2), _posY + _sizeY), Color.GreenYellow, Color.Green);
}
return lgb;
}
}
答案 0 :(得分:9)
你需要实例化drawObjs
- 没有它,它是一个空引用:
List<drawObject> drawObjs = new List<drawObject>();
答案 1 :(得分:4)
实施您的清单:
List<drawObject> drawObjs = List<drawObject>();
答案 2 :(得分:0)
如果您使用类型推断,则可能不太可能犯这个错误。
var drawObjs = new List<drawObject>();