boxing, unboxing
来源:互联网 发布:艾佛森 体测数据 编辑:程序博客网 时间:2024/05/01 14:50
关于在.net中,什么时候boxing,什么时候unboxing,这里有段有趣的代码。
有段代码是要在List<>类型里储存多个数据,比如Student 数据,同一班级的Student的ClassId的值是相同的
List<Student> listStudents = new List<Student>(); Student s1 = new Student(); s1.ClassId = "C001"; s1.StudentId = "S0001"; listStudents.Add(s1); s1.StudentId = "S0002"; listStudents.Add(s1); s1.StudentId = "S0003"; listStudents.Add(s1); PrintStudentIds(listStudents);
执行的结果是
S0001S0002S0003
Student只有一个实例,为什么结果不是S0003 S0003 S0003?如果Student是Class,那么就是这个结果了,可是如果Student是struct,就会产生上面的结果。
因为List<>的Add方法的签名是,Add(object o),如果传递给方法一个struct类型,那么一次boxing就会发生,存入List是一个新生成的临时对象,当再次付给同一个struct的字段一个新值,再次调用Add方法,就再一次产生一个新的临时对象。所以最后List里保存的是一组临时对象,每个对象的StudentId字段都是不同的值。
- boxing, unboxing
- 11.3 Boxing and unboxing
- 关于Boxing和Unboxing
- Boxing and Unboxing
- Boxing and Unboxing
- 关于boxing 和 unboxing
- Boxing and Unboxing
- C#的Boxing/Unboxing解析
- BOXING AND UNBOXING FOR BEGINNER
- Boxing and unboxing in C#
- java中的Boxing和unboxing
- java中的auto-boxing/unboxing
- C#中的"装箱"(boxing)与"拆箱"(unboxing)
- C#中的装箱(boxing)拆箱(unboxing)
- C#中的装箱(boxing)拆箱(unboxing) (续)
- C#中的装箱(boxing)拆箱(unboxing)
- 打包/解包 Auto-boxing/unboxing
- 装箱(Boxing)拆箱(unboxing)
- 在对话框(CDialog)中使用分割窗(CSplitterWnd)
- win32汇编入门了解(3)VS生成的代码里面的几个常见的基本伪指令
- 得到本机的Oracle服务器名称
- 中国博大精生的汉字—说文解字之“极”
- CSS的十个常用技巧
- boxing, unboxing
- SQL自动递增及MySQL常用语句
- 如何读取iOS设备的代理设置
- PKU ACM 1753 第一道bsf算法
- 黑马程序员-----交通灯管理系统学习日志
- [VC/MFC ] VC++实现拨号上网程序详解
- 团购网站与时巨变,小网站是否要变成僵尸站
- 1128
- Repeater控件介绍及使用方法