1) Automatic Properties自动属性 如果你之前使用的是.NET 2.0或者你不熟悉.NET 3.5的新特性,你可能经常写出以下的代码:

定义属性

public class Person
{
private string firstName;
private string lastName;
private int age;

public string FirstName
{
get { return firstName; }
set { firstName = value; }
}

public string LastName
{
get { return lastName; }
set { lastName = value; }
}

public int Age
{
get { return age; }
set { age = value; }
}
}

事实上,在上面的代码中我们并没有为属性中的get/set添加任何的逻辑,为什么不适用数据成员(field)呢?两个主要原因是:

1). 无法轻松地对数据成员进行数据绑定;

2). 当你把公开的数据成员转成属性的时候,必须编译类的代码,同时也必须编译访问该类实例的代码,否则,无法使原来的代码正常使用

.NET3.5引进新的特性” Automatic Properties”,即自动属性,避免声明private的数据成员和get/set逻辑。编译器会自动创建私有的数据成员并完成get/set操作 使用.net3.5修改以上代码如下:

自动属性

1 public class Person
2 {
3 public string FirstName { get; set; }
4 public string LastName { get; set; }
5 public int Age { get; set; }
6 }

2) Object Initializers对象初始化器 当使用一个类,并对类中的属性进行赋值是,我们经常这样写:

对象初始化

1 Person person = new Person();
2 person.FirstName = "Xiao Tian";
3 person.LastName = "Chen"; person.Age = 26;

是否想过使用更加简洁的写法呢?尝试下对象初始化器吧,修改代码如下:

对象初始化(new)

1 Person person = new Person(){FirstName="Xiao Tian",LastName="Chen",Age = 26};

够爽吧,除了这种简单的属性初始化外,对象初始化器还允许我们进行嵌套,参考如下代码:

嵌套对象初始化

1 Person person = new Person { FirstName = "Scott",
2 LastName = "Guthrie",
3 Age = 32,
4 Address = new Address { Street = "One Microsoft Way", City = "Redmond", State = "WA", Zip = 98052 }
5 };

3) Collection Initializers集合初始化器 对象初始化器很强大,同时,他也简化了将对象添加到集合的操作。

例如,我要添加3个Person到泛型集合中,可以这样写:

集合初始化

1 List people = new List();
2
3 people.Add( new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } );
4
5 people.Add( new Person { FirstName = "Bill", LastName = "Gates", Age = 50 } );
6
7 people.Add( new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 } );

通过使用对象初始化器,我们节省了很多代码,但是,集合初始化器允许我们更进一步简化:

集合初始化(new)

1 List people = new List { new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
2 new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
3 new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
4 }

原文参考:http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx

转载于:https://www.cnblogs.com/tian2010/archive/2011/07/05/2097830.html

.Net 3.5新特性(1)Automatic Properties, Object Initializers, and Collection Initializers相关推荐

  1. oracle19c内存管理,19c新特性之Automatic In-memory

    在Oracle数据库12.1中,Heat Map作为自动数据优化(ADO)的一个特性引入. 在Oracle数据库12.2中,Heat Map特性增加了对Inmemory功能的支持. 在Oracle数据 ...

  2. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

  3. SqlServer 2016新特性 —— automatic seeding (自动种子设定)究竟是什么

    在 SQL Server 2012 和 2014 中,初始化 SQL Server Always On 可用性组中的次要副本的唯一方法是手动执行备份.复制和还原.SQL Server 2016 引入了 ...

  4. Oracle 11gR2新特性--延迟段创建(Deferred Segment Creation)和exp不能导出空表

    Oracle 11gR2新特性--延迟段创建(Deferred Segment Creation)和exp不能导出空表 真题1. 什么是延迟段创建(Deferred Segment Creation) ...

  5. iOS 各版本中的新特性(What's New in iOS)- 目录翻译完成

    iOS 各版本中的新特性(What's New in iOS) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&q ...

  6. MySQL5.5复制新特性

    MySQL5.5复制新特性 一.MySQL5.5复制改进 MySQL5.5版本对MySQL Replication进行了多项的改良,以提供数据的完整性,性能和应用灵活性更高水平. 1.Semisync ...

  7. 11g新特性:X$DBGALERTEXT一个很酷的内部视图

    以往我们为了管理数据库的便利,总是希望能够利用SQL查询Oracle关键的Alert.log告警日志,在11g以前可以通过创建Alert.log内容的外部表来实现查询日志内容的目的的.   从11g ...

  8. JDK 10 的 109 项新特性

    来源:开源中国, www.oschina.net/translate/109-new-features-in-jdk-10 虽然感觉 JDK9 发布才仅仅几周的时间,然而,随着新的 OpenJDK 的 ...

  9. 【收藏】C# 2.03.0新特性总结

    c#2.0新特性 范型 我们知道通用的数据结构可以采用object存储任何数据类型.使用object问题是: 显示的强制转带来的代码复杂性 换装箱拆箱的性能损失(为什么有性能损失?因为涉及动态内存分配 ...

最新文章

  1. Sayjoy┊多媒体在线编辑创作工具
  2. 国际分析师郭明錤:网络营销外包之下苹果头戴装置主要供应商被曝光!
  3. java中常量有初始化值吗,java的变量和常量
  4. android 锁屏音量,Android锁屏状态获取音量按键事件
  5. ASP.NET Core Web API使用静态swagger.json文件
  6. 随机效应估算与固定效应估算_一般混合线性模型固定效应、随机效应与另一随机向量的联合估计...
  7. 微商如何打印电子面单
  8. Cookie学习总结
  9. python中valueerror是什_Python:ValueError和Exception的区别?
  10. nio2 java_java nio2
  11. LeetCode 473. 火柴拼正方形
  12. JSP听课笔记(一)
  13. 关于手眼标定的误差计算
  14. opencv摄像头异常处理
  15. android手机常用浏览器,Android手机 三大浏览器对比评测
  16. ABYY OCR 文字识别软件 V15. 安装教程
  17. btrfs filesystem 增加容量
  18. Redux-前端开发者的福音
  19. Thinkpad E450c 系统起不来解决方案
  20. 应用场景应该如何选择适合的区块链底层技术平台?

热门文章

  1. 网络抖动多少ms算正常_子宫内膜厚度多少算正常?
  2. 可以获取python整数类型帮助的是什么-Python 的数值类型(整数、长整数、浮点数和复数)...
  3. python常用命令汇总-python数据分析之pandas常用命令整理
  4. 学python工资高吗-我程序员年薪 80 万被亲戚鄙视不如在二本教书的博士生?
  5. python 贴吧自动回复机-Python实现微信自动回复机器人详细教程
  6. python绘制三维散点图-Python散点图与三维图
  7. python提取excel数据-使用Python从Excel获取运营数据
  8. 用python画玫瑰花教程-利用Python的turtle库绘制玫瑰教程
  9. python画图程序有图-Python海龟画图工具绘制叮当猫程序
  10. 计算机二级python用什么书-计算机二级Python考试有什么学习资料?