深入理解c#(第三版)(文摘)
第一部分 基础知识
第1章 C#开发的进化史
1.3
1.3.1 表示未知的价格
public decimal? Price { get; private set; }
new ProductWithNullablePrice { Name="Sweeney Todd", Price=null}
foreach (ProductWithNullablePrice product in products.Where(p => p.Price == null))
1.3.2 可选参数和默认值
public Product(string name, decimal? price = null)
1.4 LINQ简介
List<ProductWithSupplierID> products = ProductWithSupplierID.GetSampleProducts();
List<Supplier> suppliers = Supplier.GetSampleSuppliers();
var filtered = from p in products
join s in suppliers on p.SupplierID equals s.SupplierID
where p.Price > 10
orderby s.Name, p.Name
select new
{
SupplierName = s.Name,
ProductName = p.Name
};
foreach (var v in filtered)
{
Console.WriteLine("Supplier={0}; Product={1}",
v.SupplierName, v.ProductName);
}
linq to XML
XDocument doc = XDocument.Load("data.xml");
var filtered = from p in doc.Descendants("Product")
join s in doc.Descendants("Supplier")
on (int)p.Attribute("SupplierID")
equals (int)s.Attribute("SupplierID")
where (decimal)p.Attribute("Price") > 10
orderby (string)s.Attribute("Name"),
(string)p.Attribute("Name")
select new
{
SupplierName = (string)s.Attribute("Name"),
ProductName = (string)p.Attribute("Name")
};
foreach (var v in filtered)
{
Console.WriteLine("Supplier={0}; Product={1}",
v.SupplierName, v.ProductName);
}
linq to SQL
1.5 COM和动态类型
1.6 异步代码
第2章 C#1所搭建的核心基础
2.1 委托
1.声明委托类型
2.为委托实例的操作找到一个恰当的方法
3.创建委托实例
4.调用委托实例
------------------------------------------
2.2 类型系统的特征
静态,显示,安全的
2.3 值类型和引用类型
引用类型保存在堆上,变量的值是在它声明的位置存储的。只有局部变量和方法参数在栈上。
int? nVal1 = null;
int? nVal2 = 5;
// nVal1为空,相乘后还是null,输出0作为默认值
Console.WriteLine(2 * nVal1 ?? 0);
// nVal2非空,取计算值输出,输出10
Console.WriteLine(2 * nVal2 ?? 0);
第二部分 c#2:解决c#1的问题
第3章 用泛型实现参数化类型
类型约束:
1.引用类型约束:where T:class
2.值类型约束:where T:struct
3.构造函数类型约束:where T:new() string没有无参的构造函数
4.转换类型约束 派生一个类,多个接口
5.组合约束
由子类向父类转换是协变;由父类向子类转换是逆变
第4章 可空类型
public struct Nullable<T> where T : struct
DateTime? death;
第5章 进入快速通道的委托
第6章 实现迭代器的捷径
yield的用法:
简单地说,当希望获取一个IEnumerable<T>类型的集合,而不想把数据一次性加载到内存,就可以考虑使用yield return实现"按需供给"。
yield break 表示跳出迭代.
yield return 表示在迭代中下一个迭代时返回的数据
第7章 结束c#2的讲解:最后的一些特性
分部类型。静态类。独立的取值方法,赋值方法属性访问器。命名空间别名。
Pragma指令:警告pragma。非安全代码固定大小的缓冲区。把内部成员暴露给选定额程序集。
第三部分 c#3:革新写代码的方式
第8章 用智能的编译器来防错
自动实现的属性。
隐式类型的局部变量。var
对象和集合初始化程序。
Person tom = new Person
{
Name = "Tom",
Age = 9,
Home = { Town = "Reading", Country = "UK" },
Friends =
{
new Person { Name = "Alberto" },
new Person("Max"),
new Person { Name = "Zak", Age = 7 },
new Person("Ben"),
new Person("Alice")
{
Age = 9,
Home = { Town = "Twyford", Country="UK" }
}
}
};
隐式类型的数组。
var tom = new { Name = "Tom", Age = 9 };
var holly = new { Name = "Holly", Age = 37 };
var jon = new { Name = "Jon", Age = 36 };
匿名类型。
第9章Lambda表达式和表达式树
第10章 扩展方法
第11章 查询表达式和Linq to objects
第12章 超越集合的Linq
第四部分 c#4:良好的交互性
第13章 简化代码的微小修改
第14章 静态语言中的动态绑定
dynamic
第五部分 c#5:简化的异步编程
第15章 使用async/await进行异步编程
第16章 c#5附加特性和结束语
深入理解c#(第三版)(文摘)的更多相关文章
- 深入理解C#第三版部分内容
最近,粗略的读了<深入理解C#(第三版)>这本技术书,书中介绍了C#不同版本之间的不同以及新的功能. 现在将部分摘录的内容贴在下面,以备查阅. C#语言特性: 1.C#2.0 C#2的主 ...
- 【C# in depth 第三版】温故而知新(1)
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行 ...
- 【C# in depth 第三版】温故而知新(1) (转)
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行 ...
- 关于阮一峰老师es6(第三版)中管道机制代码的理解浅析
最近正在学习阮一峰老师的es6(第三版)教材,在学到第七章<函数的扩展>中的箭头函数嵌套时,文中提到了一个关于“管道机制”的示例,文中源代码如下: //es6(第三版)教材中的管道机制源代 ...
- 深入理解Java虚拟机第三版,总结笔记【随时更新】
最近一直在看<深入理解Java虚拟机>第三版,无意中发现了第三版是最近才发行的,听说讲解的JDK版本升级,新增了近50%的内容. 这种神书,看懂了,看进去了,真的看的很快,并没有想象中的晦 ...
- 《CLR.via.C#第三版》第一部分读书笔记(一)
最近开始仔细研读<CLR.via.C#第三版>这本书.读pdf文档确实很累.建议有条件的朋友还是买书看吧. 我的笔记用来记录我对这本书的理解,简化下逻辑,对每个部分我觉得是要点的进行归纳总 ...
- selenium webdriver (python) 第三版
感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...
- 【转】apue《UNIX环境高级编程第三版》第一章答案详解
原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...
- JavaScript高级程序设计(第三版)学习笔记20、21、23章
第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...
- 《程序设计语言——实践之路(英文第三版)》【PDF】下载
<程序设计语言--实践之路(英文第三版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382234 内容简介 <程序设计语 ...
随机推荐
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- MYBATIS 文档
http://www.mybatis.org/mybatis-3/zh/index.html
- oracle 的 nubmer 类型与 C# 的 float double decimal 对应关系
如果先有oracle 数据的情况下,怎么对应到C#中的类型. 在oralce 中 在dba_tab_columns表中, Data_type表示字段类型:Data_length表示字段类型的长度:Da ...
- oracle 数据库学习3 --oracle 数据库中常使用的函数
1.字符函数: ASCII(X) -->返回X字符的ASCII码 concat(x,y)-->将y连接到X上输出 select concat(first_name,last_name) f ...
- h5 摄像头处理 在线视频
http://www.360doc.com/content/08/0812/03/72059_1533104.shtml http://html5online.com.cn/articles/2012 ...
- 利用bootstrap写图片轮播
利用bootstrap写图片轮播 缺点是轮播没有固定样式图片样式会改变外框的大小,所以要再设置 以及左右按钮的style也要从新设置 <div class="carousel slid ...
- 2016CCPC 合肥--最大公约数//每一年通向它的路上,多少人折戟沉沙,多少人功败垂成,有人一战成名,有人从头再来。
有这样一个有关最大公约数的函数:函数 f(x, y): { c=0 当 y>0: { c +=1 t = x % y x = y y = t } 返回 c * x * x} 给出三个正整数n,m ...
- h5页面唤起app(iOS和Android),没有安装则跳转下载页面
浏览器和app没有通信协议,所以h5不知道用户的手机释放安装了app.因此只能是h5去尝试唤起app,若不能唤起,引导用户去下载我们的app. 微信里屏蔽了 schema 协议,如果在微信中打开h5, ...
- 记一次TFS 的 垃圾提示(无法下载 未获取项目 的 代码)
提示 “ 所有文件都是最新的 ”,但是在 源码管理 里面 确是 “未下载” 我艹,第一次遇到.如图.~~ 最后发现是 TFS 的项目权限设置问题. 你妈个马批的,啥子鸡巴破B提示,太阳你妈B 的 .要 ...
- Codeforces 702C Cellular Network
题目:这里 题意:一条数轴上,有n个城市和m个塔,分别给出城市的位置和塔的位置,每个塔有个覆盖范围,问能将所有城市都覆盖的塔的最小范围是多少,一个城市只要被至少一个塔 覆盖就行. 可以利用贪心的思想模 ...