mvc MODEL里面有一个list,然后知识实例化了model,然后给model里面的list赋值时报错

.Net技术 码拜 10年前 (2015-05-10) 1303次浏览 0个评论

比如说

public class A
{
public string aa{get;,set;}
public List<B> blist{get;set;}
}
public class B
{
public string bb1{get;set;}
public string  bb2{get;set;}
}
//然后我赋值给a.
A a=new A();//实例化model A。
a.aa="hello";//给a的aa赋值。
//前面都没有问题,下面就报错了,提示Object reference not set to an instance of an object?
a.blist.add(new B{bb1="helloword",bb2="heyboys"});

我的问题是,前面已经实例化了model A,应该里面的blist也一并实例化了啊,为什么还是提示为实例化,而且当我
加上a.blist=new list<B>();就不会报错。求解决

求解决,大神来一下
10分
类在实例化时,会为未赋值的字段赋默认值,即default(T)
default(List<B>)为null,null.Add当然报异常
至于你说的a.aa=”hello”;不报错,赋值当然不报错了
你执行的是a.blist.add,不是赋值
2分
如果你要默认就赋值的话,那么应该写构造函数

public A
{
  this.blist = new   List<B>();
}
8分
blist是不会随model A一并实例化的。
你可以在构造函数里面实例化blist

public class A
{
    public A()
    {
        this.blist = new List<B>();
    }
    public string aa{get;,set;}
    public List<B> blist{get;set;}
}
引用 2 楼 starfd 的回复:

类在实例化时,会为未赋值的字段赋默认值,即default(T)
default(List<B>)为null,null.Add当然报异常
至于你说的a.aa=”hello”;不报错,赋值当然不报错了
你执行的是a.blist.add,不是赋值

谢谢了,了解了,多学了点东西

引用 4 楼 ZXY900213 的回复:

blist是不会随model A一并实例化的。
你可以在构造函数里面实例化blist

public class A
{
    public A()
    {
        this.blist = new List<B>();
    }
    public string aa{get;,set;}
    public List<B> blist{get;set;}
}

谢谢


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mvc MODEL里面有一个list,然后知识实例化了model,然后给model里面的list赋值时报错
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!