2010-12-03 22 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をインスタンス化する必要がある - それなしで、それはnull参照です:

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

今、私はちょうど愚かな感じ;) - 私は:) – Bildsoe

+1

@Bildsoeことを見落としている可能性がどのように知っていない - 私たちはすべて我々はそれを見て、あまりにも密接に問題を見て瞬間を持っている... – Oded

+0

とそれらに異なる名前をつける:) – Pabuc

4

Instansiateリスト:

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

あなたは型推論を使用した場合、あなたがこの間違いを犯す可能性が低いかもしれません。

var drawObjs = new List<drawObject>();