2010-12-03 36 views
1

以下结果导致NullReferenceException。它告诉我,“drawObjs.Add(drawObj);” - 你调用的对象是空的。我不明白为什么这不是一个实例?我怎么不能添加一个对象到我的清单在C#中?

名单:

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; 

     } 

    } 

回答

9

您需要实例drawObjs - 没有它,这是一个空引用:

List<drawObject> drawObjs = new List<drawObject>(); 
+0

现在我只觉得自己很蠢;) - 不知道我怎么会因此而忽略了:) – Bildsoe 2010-12-03 12:32:45

4

Instansiate列表:

List<drawObject> drawObjs = List<drawObject>(); 
0

如果使用类型推断你可能会不太可能犯这样的错误。

var drawObjs = new List<drawObject>(); 
相关问题