标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧
[Serializable] public class MO_T_sj_quest { public List<MO_T_sj_answer> AnswerList { get; set; } public List<MO_T_sj_answer> IDList { get; set; } public List<MO_T_sj_quest_bind> BindList { get; set; } public List<MO_T_sj_quest_user> UserList { get; set; } public int Classid { get; set; } }
<pre name="code" class="csharp">public List<MO_T_sj_answer> AnswerList { get; set; }这个就是mo_t_sj_quest中的一个属性,只不过这个属性相比Classid有点特殊,其是一个泛型集合,那么在使用的时候应该注意以下方面:
如果我想在业务层去赋值给mo_t_sj_quest,但里面有几个泛型集合,想同时给他赋值,假设集合里只有一个值的话,是不是如下写:
MO_T_sj_quest tempModelQuest = new MO_T_sj_quest(); tempModelQuest.AnswerList[0].Content = "dffffffffdfd"; tempModelQuest.UserList[0].MEDIAID = 1; tempModelQuest.Medias[0].ID = 5;哈哈,错了,这样写,看似很合理,但是忘记了,这个 tempModelQuest.AnswerList[0]是一个泛型集合List<MO_T_sj_answer>,你还没有初始化就去使用,会不会报错呢?
所以,赋值应该这样:
MO_T_sj_quest tempModelQuest = new MO_T_sj_quest(); tempModelQuest.UserList = new List<MO_T_sj_quest_user>() { new MO_T_sj_quest_user() { USERNAME = "dsdsdsdsdsds"} }; tempModelQuest.Medias = new List<MO_T_sj_quest_media>() { new MO_T_sj_quest_media() { ID = 5 } }; tempModelQuest.AnswerList = new List<MO_T_sj_answer>() { new MO_T_sj_answer() { Content = "dsdsdsdsdsdsss" } };好了,留下脚印,有不对之处欢迎指正!谢谢
原文地址:http://blog.csdn.net/xuejunling/article/details/43527819