一个类在另一个类中以集合形式声明为属性时应该注意的问题

标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧

    [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" } };

好了,留下脚印,有不对之处欢迎指正!谢谢

时间: 2024-10-12 02:08:15

一个类在另一个类中以集合形式声明为属性时应该注意的问题的相关文章

【ASP.NET】DataContract序列化,反序列化对象中包含用接口声明的属性时的处理方法

为此对象添加KnownType属性(Attribute).类型为用接口声明的属性(Property)的所有可能类型. 示例如下: 1 public interface IKey 2 { 3 [DataMember] 4 int Id { get; set; } 5 6 [DataMember] 7 string Name { get; set; } 8 } 9 10 [DataContract] 11 public abstract class KeyBase : IKey 12 { 13 [D

使用angularjs中ngRepeat的$even与$odd属性时的注意事项

JavaScript中数组的索引是从0开始的,因此我们再取奇偶的时候需要用!$even和!$odd来将$even和$odd的布尔值反转 下面给出一个实例: 使用$odd和$even来制作一个红蓝相间的列表 <!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>ng-rep

C/CPP系类知识 What happens when a function is called before its declaration in C? 在C中当使用没有声明的函数时将发生什么

http://www.geeksforgeeks.org/g-fact-95/ 1 在C语言中,如果函数在声明之前被调用,那么编译器假设函数的返回值的类型为INT型, 所以下面的code将无法通过编译: #include <stdio.h> int main(void) { // Note that fun() is not declared printf("%d\n", fun()); return 0; } char fun() { return 'G'; } 错误:其

block作为类的属性时用copy

1. block作为类的属性时用copy Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的 <栈 :由系统维护的局部变量 是存在栈上的,其生命周期随函数的生命周期> <堆 :由程序员申请空间地址,由程序员手动释放,生命周期受到程序员控制> 使用retain也可以,因为block的retain行为默认是用copy的行为实现的,block变量默认是声明为栈变量的,为了能够在block的声明域外使用,所以要把

C#winform中使用控件的Dock属性进行布局

想要实现如下布局,可以通过设置控件的Dock属性达到效果 1.拖放一个panel控件一个label控件(放在panel中)和一个treeView控件到TestForm中 2.设置panel的Dock属性为Top(设置BorderStyle属性为FixedSingle,这样显得美观些),设置treeView的Dock属性为Fill 3.需要注意的是要先把panel放到TestForm中,先放treeView就会使得treeView填充TestForm而被后放置的panel遮盖,如下所示 4.想要实

需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次,超过5次提示:游戏试玩结束,请付费。

package cn.idcast4; import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties; /* * 需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次, *

声明一个MyClass类,在类中声明一个常量,和一个成员方法

<?php class MyClass { //声明一个MyClass类,在类中声明一个常量,和一个成员方法 const CONSTANT = 'CONSTANT value'; //使用const声明一个常量,并直接赋上初使值 private $foo; private $sss; function __construct($foo,$sss){ $this->foo = $foo; $this->sss = $sss; } function showConstant() { //声明

java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方

一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void main (String[] args){ String s; System.out.println("s=" + s); } } A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null” C 由于String s没有初始化,代码不能编译通过 D 代码得到编译,但捕获到 N

Eclipse java中一个工程引用另一个工程的类

最近写代码在写一个tools的工程,打算把平常用到的自己写的工具类都放在里面. 所以就出现了一个工程使用到tools工程中的类使如何引用 比如 tools工程为 project tools ,现在要使用工具工程中的类的工程为project aa 那么右击aa,properties->java build paths->project->add 选择tools 即可对project tools 中类进行引用.