为什么我不能在c#中将对象添加到我的列表中?

时间:2010-12-03 12:26:17

标签: c# constructor

以下结果是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;

        }

    }

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:4)

实施您的清单:

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

答案 2 :(得分:0)

如果您使用类型推断,则可能不太可能犯这个错误。

var drawObjs = new List<drawObject>();