对象与集合初始化器

创建一个对象时可以包含一个对象初始化器或集合初始化器,用于初始化所创建对象的成员或新创建的集合的元素。使用初始化器可以让我们的代码变得更简洁。

对象初始化器

在以前如果定义了一个类,并将类实例化,我们会像下面这样做

public class oec2003
{int x, y;public int X{get { return x; }set { x = value; }}public int Y{get { return x; }set { x = value; }}}

oec2003 o=new oec2003();
o.X=2003;
o.Y=2004;

使用对象初始化器

public class oec2003
{int x, y;public int X{get { return x; }set { x = value; }}public int Y{get { return x; }set { x = value; }}
}var o=new oec2003{X=2003,Y=2004};

对象初时化器是利用了编译器对对象中的对外可见的字段或属性进行按序赋值,在编译还是隐式调用了构造函数,对字段或属性的赋值可以是一个或是多个。

集合初时化器

集合初始化器会对初始化器中的元素进行按序调用,下面是一个集合初时化器的例子

List<int> num = new List<int> { 0, 1, 2, 6, 7, 8, 9 };

应用集合初始化器的对象的类型必须实现了System.Collections.Generic.ICollections<T>接口并指定了确定的T。集合初始化器将依次对每个指定的元素调用ICollection<T>.Add(T)。
有下面这样一个类,记录一个人的个人信息

public class Oec2003Info
{string name;int age;List<string> phoneNumbers = new List<string>();public string Name{get { return name; }set { name = value; }}public string Age{get { return age; }set { age = value; }}public List<string> PhoneNumbers{get { return phoneNumbers; }}
}

以前的做法

var oec2003infos = new List<Oec2003Info>();var tmp1= new Oec2003Info();
tmp1.Name = "oec2003";
tmp1.Age=100;
tmp1.PhoneNumbers.Add("
tmp1.PhoneNumbers.Add("1592********");
Oec2003Info.Add(tmp1);var tmp2 = new Oec2003Info();
tmp2 .Name = "oec2003";tmp2.Age=100;
tmp2.PhoneNumbers.Add("1593********");
tmp3.PhoneNumbers.Add("1594********");
Oec2003Info.Add(tmp2);

使用对象初始化器

var oec2003infos= new List<Oec2003Info>
{new Oec2003Info{Name = "oec2003",Age=100;PhoneNumbers={"1591********","1592**********"}},new Oec2003Info{Name = "oec2003",Age=100;PhoneNumbers = { "1593********","1594*********"}}};

C#3.0学习(2)---对象集合初始化器相关推荐

  1. C#笔记13 匿名类型、集合初始化器、扩展方法和查询表达式

    文章目录 匿名类型 new{...}和隐式类型var 集合初始化器和对象初始化器 扩展方法 案例引出扩展方法的意义 扩展方法的使用 做Enumerable的扩展方法 扩展方法使用 标准查询运算符 Li ...

  2. .NET 中创建支持集合初始化器的类型

    对象初始化器和集合初始化器只是语法糖,但是能让你的代码看起来更加清晰.至少能让对象初始化的代码和其他业务执行的代码分开,可读性会好一些. 本文将编写一个类型,可以使用集合初始化器构造这个类型.不只是添 ...

  3. [From 10.1~10.5] 对象和集合初始化器(C#语法糖系列)

    经常要构造一个对象并设置对象的一些公众属性(或字段). 1.为了简化这个常见的编程模式,C#语言支持一种特殊的对象初始化语法.下面是一个例子: Employee e = new Employee(){ ...

  4. 学习篇-springboot-系统初始化器

    文章目录 一.springboot-系统初始化器 1. 实现方式一 2. 实现方式二 3. 实现方式三 一.springboot-系统初始化器 系统初始化器重点关注的类:ApplicationCont ...

  5. lambda 对象初始化器 集合初始化器

  6. 第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)

    一. 语法糖简介   语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方 ...

  7. 【黑马程序员 C++教程从0到1入门编程】【笔记4】C++核心编程(类和对象——封装、权限、对象的初始化和清理、构造函数、析构函数、深拷贝、浅拷贝、初始化列表、友元friend、运算符重载)

    黑马程序员C++教程 文章目录 4 类和对象(类属性[成员属性],类函数[成员函数]) 4.1 封装 4.1.1 封装的意义(三种权限:public公共.protected保护.private私有)( ...

  8. Linq之隐式类型、自动属性、初始化器、匿名类

    目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍 ...

  9. C# lambda表达式及初始化器

    C# lambda表达式及初始化器 using System;using System.Collections.Generic; using System.Linq; namespace Consol ...

  10. C语言指定初始化器解析及其应用

    由于笔者能力有限,文中如果出现错误的地方,欢迎大家给我指出来,我将不胜感激,谢谢- #指定初始化器的概念 C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同. ...

最新文章

  1. 参数binlog_row_image设置MINIMAL,你今天被坑了吗?
  2. 小裁缝返乡创业做儿童品牌,如今身家数十亿冲刺上市
  3. MySQL学习之路:多实例无法启动排错
  4. java的dbhelper类_DBHelper.java(数据库连接类)
  5. css什么时候用绝对定位,CSS - 使用绝对定位
  6. 计算机光盘工作原理,CD-ROM的工作原理
  7. tensorflow1.11.0 tf.constant()函数(创建一个常数张量)
  8. 将太阳光聚集起来可以用来做饭!?
  9. linux python源码目录结构,TensorFlow0.8源码阅读 -- 代码目录结构讲解
  10. 【转】通过Graph 浏览器体验Microsoft Graph
  11. Linux入门实践笔记(七)——云服务器中配置Java项目的JMX连接失败问题解决记录
  12. docker修改镜像的存储位置_win10家庭版Docker环境搭建步骤
  13. 淘宝质量属性场景分析
  14. candence 知识积累3
  15. 【渝粤教育】国家开放大学2018年秋季 2332T高等数学基础 参考试题
  16. DLL分两种?用C#加载,有的成功,有的失败
  17. 华为HCIP(HCNP)笔记,还不快快收藏!
  18. word流程图怎么使箭头对齐_word流程图箭头怎么画
  19. 创建计划行确认数量为0的销售订单
  20. 真的!这么写参数校验 (Validator) 就不会被劝退了。。。

热门文章

  1. Day11名称空间,作用域,闭包函数
  2. IONIC2/3解决文本框获取焦点的问题
  3. 【转】NPOI自定义单元格背景颜色
  4. s3c2440串口详解
  5. 从USB驱动器运行Windows 10
  6. 09-排序2 Insert or Merge
  7. WF的性能特征(一)
  8. 第一次 Zul'grub
  9. R系列处理器是服务器,AMD全新R系列处理器领军嵌入式高性能领域
  10. JSP/Servlet-----charset 、pageEncoding差别