对象和集合初始值设定项
来源:互联网 发布:最新金山画王软件 编辑:程序博客网 时间:2024/05/21 06:50
1 对象初始值设定项
完整示例代码:
using System;namespace ObjectInitExp{ class Program { static void Main(string[] args) {//片段1 Person p = new Person() { Name = "tiana0", Age = 28, Job=new Job(){ JobName="Coder",JobTime = 8} }; Console.WriteLine("p:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p.Name, p.Age, p.Job.JobName, p.Job.JobTime);//片段2 Person p1 = new Person{ Name = "tiana0", Age = 28, Job = new Job{ JobName = "Coder", JobTime = 8 } }; Console.WriteLine("p1:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p1.Name, p1.Age, p1.Job.JobName, p1.Job.JobTime);//片段3 Person p3 = new Person { Name = "tiana0", Age = 28, Job=null }; Console.WriteLine("p3:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p3.Name, p3.Age, null, null); } } class Person { //属性 public string Name { get; set; } public int Age { get; set; } //字段 public Job Job; } public class Job { public string JobName { get; set; } public int JobTime { get; set; } } }
运行程序,结果如下:
知识点小结:
- 对象初始值设定项的作用:使用对象初始值设定项可以在创建对象时向对象的任何可访问的字段或属性分配值,而无需显式调用构造函数。
- 注意代码中的[片段1]与[片段2]的区别,[片段2]仅仅去掉了[片段1]中类名后面的圆括号而已,两种写法均可。
- [片段3]中引用类型字段Job被赋值null,这样在对象初始值设定项中也是可以的。
2 集合初始值设定项
示例代码(接前面代码)
List<Person> pList1 = new List<Person>() //注1{ new Person(){Name = "tiana0", Age = 28, Job=new Job(){ JobName="Coder",JobTime = 8}}, new Person(){Name = "tiana0", Age = 28, Job = new Job{ JobName = "Coder", JobTime = 8 }}, new Person(){Name = "tiana0", Age = 28, Job=null},//注2 Null//注3};int i = 0;foreach (Person pTemp in pList1){ if (pTemp != null)//注4 { Console.WriteLine("pTemp{0}:Name={1},Age={2},Job.JobName={3},Job.JobTime={4}", i++, pTemp.Name, pTemp.Age, pTemp.Job != null ? pTemp.Job.JobName : null, pTemp.Job != null ? pTemp.Job.JobTime : 0);//注5 }}
运行代码,得到结果:
代码说明:
- 去掉[注1]处的小括号,代码合法。同样去掉“new Person(){...}”中的小括号,代码也是合法的。
- [注2]此处的Job被赋值为null是合法的,只是在循环输出Person成员值时,需要对Job进行null值判断。(见[注5])
- [注3]此处的Person被赋值为null,这在对象初始值设定项中同样合法,只是在循环输出集合值时,同样需要增加null值判断。(见[注4])
- 集合初始值设定项的作用对象初始值设定项作用一致,简化了初始化工作。
3 初始值设定项作用于匿名类型
var tiana=new{ Name="tiana",Age=28};
注意:这里的关键字“new”不可少。
关于这点的应用,在Linq中会被经常用到,看示例代码:
var temp = from pt in pList1 select new { newName=pt.Name, newAge=pt.Age };
这句代码就不做分析了。
- 对象和集合初始值设定项
- 对象和集合初始值设定项(C# 编程指南)
- C# Tips: 使用集合初始值设定项初始化字典
- 学习笔记(002)-对象初始值设定项
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 某某 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 反射-初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 类型初始值设定项引发异常
- 奇怪的类型初始值设定项异常
- 白话经典算法系列之一 冒泡排序的三种实现
- 引用
- HDOJ 4396 —— 二维SPFA
- poj1961 Period (KMP)
- 从一道面试题分析Linux进程+IO缓冲区机制
- 对象和集合初始值设定项
- java 句子中得单词顺序倒过来
- lua结合cocosbuilder开发游戏-不再勾选js controller了
- hdu4758 Walk Through Squares AC自动机(trie图)DP
- CPPUNIT在vs2010实践的编译配置实践
- Esper学习之七:EPL语法(三)
- Linux内核的变频机制
- SQL查询案例---两表关联更新使用VIEW
- Harris角点检测