为什么列表<decimal>中的空引用异常

时间:2016-02-15 17:22:11

标签: c# list decimal nullreferenceexception

我遇到了问题,我用C#创建了一个对象:

public class logis
        {
            public string codigo { get; set; }
            public List<decimal> Necesidades { get; set; }
            decimal SumaNecesidades{get;set;}
        }

然后我做这样的事情:

logisva logi = new logis();
logi.codigo = oDataReader.GetValue(0).ToString();
logi.Necesidades.Add(0);

但是当我执行我的代码时,我得到一个空引用异常错误。最后一行Object reference not set to an instance of an object.

上的logi.Necesidades.Add(0);

我知道为什么会收到此错误?

1 个答案:

答案 0 :(得分:2)

C# the properties中,不要自动初始化/创建app.post('/auth/google/:platform(android|ios)', function(req, res, next) { passport.authenticate(req.params.platform, function(err, user, info) { // ... })(req, res, next); }); 对象。您需要明确地创建列表:

List<ofType>

另一种选择是在getter resp中创建列表。 setter(所以说你自己的延迟初始化,缺点 - 引入更多代码,优点不需要覆盖每个构造函数):

public class logis
{
    public string codigo { get; set; }
    public List<decimal> Necesidades { get; set; }
    decimal SumaNecesidades{get;set;}

    public logis() 
    { 
        this.Necesidades = new List<decimal>(); 
    }
}

另一种选择是使用新的C#6.0功能(如果它是使用/已经使用最新的.NET Framework版本的选项),如@Jcl的评论中所建议的那样:

public class logis
{
    public string codigo { get; set; }
    decimal SumaNecesidades{get;set;}

    private List<decimal> necesidades = null;
    private void initNecesidades() 
    {
        if (this.necesidades == null) 
        { 
            this.necesidades = new List<decimal>(); 
        }
    }
    public List<decimal> Necesidades 
    { 
        get
        {
            this.initNecesidades();
            return this.necesidades;
        }
        set
        {
            this.initNecesidades();
            this.necesidades = value;
        }
    }
}