C# in Depth阅读笔记3:C#3特性
1.隐式类型
var a=new Dictionary<string ,list<person>>();可以简化代码,增强可读性。
2.简化初始化
(1)设置简单属性
Person tom1= new Person(){Name="Tom", Age=};
(2)为嵌入对象设置属性
Person tom2=new Person()
{
Name="Tom",
Home={Country="china",Town="Tangshan"}(Home为只读属性,不能直接赋值)
};
new关键字用来初始化对象,而对Home属性的赋值没有使用new关键字,因为在此处并没有新建一个Home对象,而是在new Person()时新建的(下面Friend集合同理)
(3)集合初始化列表
Dictionary<string,int> nameMap=new Dictionary<string,int>
{
{"holly", },
{"matt",}
}
Person tom = new Person
{
Name = "Tom",
Age = ,
Home = { Town = "Reading", Country = "UK" },
Friends =
{
new Person { Name = "Alberto" },
new Person("Max"),
new Person { Name = "Zak", Age = },
new Person("Ben"),
new Person("Alice")
{
Age = ,
Home = { Town = "Twyford", Country = "UK" }
}
}
};
3。隐式类型的数组
MyMethod(new string[]{"holly","Tom"})等价于 MyMethod(new []{"holly","Tom"})
4.匿名类型
在给定的程序集中, 具有相同数量,相同名称及类型的属性,并且属性具有相同顺序的匿名类型是同一种类型。
匿名类型的属性和字段是只读的。
5.扩展方法
空引用可以调用扩展方法(例如可以新建一个IsNullOrEmpty(this string a)的扩展方法)
groupby并不生成新的集合,只是改变迭代的顺序。
6.linq
let子句会转换成select方法生成一个新的匿名类型。
join左端的序列仍采用流式处理,右端采用缓冲处理。
C# in Depth阅读笔记3:C#3特性的更多相关文章
- C# in Depth阅读笔记1:C#1特性
1.委托 委托是对包含返回值和参数的行为的一种封装,类似于单一方法的接口. 委托是不易变的(就像string),system.delegate下的combine和remove方法都只能产生一个新的委托 ...
- C# in Depth阅读笔记2:C#2特性
1.方法组转换 c#2支持一个从方法组到兼容委托类型的隐式转换,即如: button.click+=new eventhandler(logevent)可以写成 button.click+=logev ...
- Mongodb Manual阅读笔记:CH5 安全性
5 安全性 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读 ...
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
随机推荐
- jQuery改造插件,添加回调函数
<script language="javascript" type="text/javascript"> function doSomething ...
- Activity和View的区别:
Activity和View的区别: activity相当于控制部分,view相当于显示部分.两者之间是多对多的关系,所有东西必须用view来显示. viewGroup继承自view,实现了ViewM ...
- MediaInfo使用简介(新版本支持HEVC)
MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用.免费获得源代码).他除了提供DLL之外,本身也提供GUI工具用于查看视频信息.我使用中发现,新版本的Media ...
- 关于select
select 1与select * 的区别:“selelct 常量 from 表名” 对应所有行,返回的永远只有一个值,即常量 ,所以一般只用来判断是否有表记录:而“select * from 表名” ...
- Android SDK目录结构和工具介绍
Android SDK目录结构和工具介绍是本文要介绍的内容,主要是来了解并学习Android SDK的内容,具体关于Android SDK内容的详解来看本文. AD: Android SDK目录结构和 ...
- PHP的优点
1.语法简单 2.学习成本低 3.开发效率高 4.跨平台 5.开发部署方便 6.开源框架非常丰富(如:ThinkPHP) 7.开源CMS系统非常丰富(如:Joomla,Wordpress) 8.开源网 ...
- 命名空间“Aspose”中不存在类型或命名空间名称“Slides”。
有可能引用的dll与项目的 .netFramework版本不同,需要确认两个版本是否相同.如果不同,项目右键->属性->应用程序.选择和引用的dll相同的版本.
- Android 解析内存泄漏
1.引用没释放造成的内存泄露 1.1.注册没取消造成的内存泄露 这种Android的内存泄露比纯Java的内存泄露还要严重,因为其他一些Android程序可能引用我们的Anroid程序的 ...
- ChildNodes详解及其兼容性处理方式
写在前面:在做insertBefore插入节点练习时发现一个问题,插入childNodes[0]和childNodes[1]时插入的位置是一样的!于是有了childNodes的了解,有了这篇文章,欢迎 ...
- Android 常用 adb 命令总结
Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...