《深入理解 C# 第2版》 - 书摘精要
(P13) 在很大程度上,C# 2 更像是对 C# 1 的各种不足之处的修修补补,所以并没有一鸣惊人。而 C# 3 中几乎所有特性都是为了构建 LINQ,并且其结果也十分特别;
(P24)
为了让委托做某事,必须满足4个条件:
—— 声明委托类型;
—— 必须有一个方法包含了要执行的代码;
—— 必须创建一个委托实例;
—— 必须调用(invoke)委托实例;
(P30) 事件不是委托实例 —— 只是成对的 add/remove 方法 (类似于属性的 取值方法/赋值方法);
(P37)
数组类型是引用类型,即使元素类型是值类型(所以 int[] 仍是引用类型,即使 int 是值类型);
接口类型 (使用 interface 来声明) 是引用类型,但可由值类型实现;
(P38)
变量的值是在它声明时的位置存储的,局部变量的值总是存储在栈 (stack) 中,实例变量的值总是存储在实例本身存储的地方。引用类型实例 (对象) 总是存储在堆 (heap) 中,静态变量也是;
值类型不可以派生出其他类型;
(P40) 当你调用类型变量值的 GetType() 方法时总是伴随着装箱过程,因为它不能被重载。如果处理未装箱形式的变量,你应该已经知道了具体类型,因此使用 typeof 替代即可;
(P41)
引用类型的对象总是在堆上,值类型的值既可能在栈上,也可能在堆上,具体取决于上下文;
引用类型作为方法参数使用时,参数默认是以“值传递”方式来传递的 —— 但值本身是一个引用;
值类型的值会在需要引用类型的行为时被装箱;拆箱则是相反的过程;
(P47) 所谓“函数化”的编程风格,是指鼓励开发者更多地利用委托。匿名方法和Lambda表达式的引入,使委托变得易于创建和使用;
(P48) 从根本上说,泛型实现了类型和方法的“参数化”,就像在普通的方法调用中,经常要用参数来告诉它们使用什么值。同样,泛型类型和方法也可以让参数告诉它们使用什么类型;
(P52) 未绑定泛型类型是已构造类型的蓝图,已构造类型是实际的对象的蓝图,正是因为存在这个关系,所以才有“额外的抽象层”一说;
(P53) 其实 C# 语言规范已经说得很清楚,凡是不是“开放类型”的类型,就是“封闭类型”。凡是涉及类型参数的类型,就是“开放类型”;
(P55)
T 是在整个类的范围内使用的类型参数;
紧跟在方法名后面尖括号中的类型参数,是泛型方法的类型参数;
(P57)
不能因为一个方法是泛型的,就意味着它必须是泛型类型的一部分;
调用泛型方法时,使用和前面见到的一样的语法来指定参数类型;
(P58)
约束要放到泛型方法或泛型类型声明的末尾,并由上下文关键字 where 来引入;
引用类型约束表示成 T : class 必须是为类型参数指定的第一个约束;
构造函数类型约束表示成 T : new() 必须是所有类型参数的最后一个约束;
(P62)
每个类型参数的约束列表都要单独用一个 where 引入;
类型推断只适用于泛型方法,不适用于泛型类型;
(P74) 实现接口所规定的方法或属性时,附加接口名作为前缀,即称为“显式接口实现”;
(P78) 数组协变性 —— 引用类型的一个数组可以被视为它的基类型的一个数组,或者被视为它所实现的任何接口的一个数组;
(P141) 在常规的方法中,return 语句具有两个作用:第一,给调用者提供返回值;第二,终止方法的执行,在退出的时候执行合适的 finally 代码块;
(P194)
LINQ 的基本功能就是创建操作管道,以及这些操作需要的任何状态;
LINQ to Objects 处理的是同一个进程中的数据序列;
(P196)
Lambda 表达式最冗长的形式是 —— ( 显式类型参数列表 ) => {语句}
Lanbda 表达式快捷语法形式:
( 显式类型参数列表 ) => 表达式
( 隐式类型参数列表 ) => 表达式
参数名 => 表达式
《深入理解 C# 第2版》 - 书摘精要的更多相关文章
- 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-
1.0.0 Summary Tittle:[EatBook]-NO.2.EatBook.2.JavaArchitecture.1.001-<修炼Java开发技术在架构中体验设计模式和算法之美&g ...
- 《修炼Java开发技术 在架构中体验设计模式和算法之美》 - 书摘精要
(P7) 建议直接加入到软件公司中去,这样会学到很多实际的东西: 程序员最主要的发展方向是资深技术专家,无论是 Java..Net 还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师: 增强 ...
- 测试开发技术:DOM中 innerHTML、innerText、outerHTML、outerText的区别
测试开发技术:DOM中 innerHTML.innerText.outerHTML.outerText的区别 我们在做web自动化的过程中通过dom处理web页面元素,那么你就要了解innerHT ...
- Java基础语法(8)-数组中的常见排序算法
title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...
- Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师
一.分布式架构体系 分布式怎么来的.传统的电信.银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正也不缺钱,IBM小型机,大型机,采购了堆 ...
- 2020 年最流行的 Java 开发技术
不知不觉间,2020 年即将于十几天之后到来,作为技术圈中你,准备好迎接最新的变化了吗?在本文中,我们将以编程界最常用的编程语言 Java 为例,分享最为主流的技术与工具. 作者 | divyesh. ...
- 手机端UC浏览器,在java开发的下载功能中存在的问题?
在java web开发中,不同浏览器对下载文件的格式有不同的要求,有时会出现视频,音频等文件无法下载的问题.我在开发中,也遇到类似的问题,觉得很苦恼. 经过百度和请教学习,得到2个解决方案. 首先得到 ...
- 个人总结的一个中高级Java开发工程师或架构师需要掌握哪几点!
今天,我来唠叨几句~~ 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.今天为大家分享Java程序员学习的6个小技巧. 1.一定要看书 现在学习Java变得比以前容 ...
- Java开发技术
1.基础技术 数据结构与算法 逻辑结构:数据对象中的数据元素之间的逻辑关系 1.集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系. 2.线性结构:线性结构中的数据元素之间是一对一的关 ...
- 【饿了么】招聘Java开发工程师、架构师
3年以上实际工作经验,本科及以上学历. 具有良好的编程基础( 比如熟悉HTTP.多线程.Socket.JVM.基本的数据结构和算法等). 熟悉Java语言以及相关的服务器(比如Tomcat).工具(M ...
随机推荐
- PS批量修改照片大小
最近发现一个好玩的东西,分享一下懒人的做法 1.先打开一张图片,调出动作面板 2.新建动作,开始记录. 3.按Ctrl + Alt + I 或者选择图像菜单----图像大小,调出修改图像大小对话框. ...
- VC引用静态库
对于路径的设置: Tools->Options->Directory中设置的Lib路径,是给VC环境设置的, 所以只要是这个VC打开的项目,都会包含这些路径. Project->Se ...
- Linux Shell编程 循环语法
for循环 for 循环是固定循环,也就是在循环时已经知道需要进行几次循环.有时也把 for 循环称为计数循环.语法: for 变量 in 值1 值2 值3… do 程序 done 在这种语法中,fo ...
- freeswitch中集成使用ekho实现TTS功能一
Linux下安装freeswitch并集成ekho实现TTS 1. linux下安装freeswitch就不多介绍了,具体链接网址: http://www.8000hz.com/archives/14 ...
- 0802 DRF 视图
昨日回顾: 1. Serializer(序列化) 1. ORM对应的query_set和ORM对象转换成JSON格式的数据 1. 在序列化类中定义自定义的字段:SerializerMethodFiel ...
- java常用日期操作方法
package com.wujiangpo.test.util; import java.text.ParseException; import java.text.SimpleDateFormat; ...
- PHP面试题 – 培训学校真实面试内部资料
1.PHP解析URL是哪个函数? parse_url() 是讲URL解析成有固定键值的数组的函数. $ua=parse_url('http://username:password@hostname/p ...
- Cocos2d-x项目移植到WP8系列之五:播放MP3
原文链接: http://www.cnblogs.com/zouzf/p/3972549.html 这一块的细节还是不太了解,只是东凑西拼能跑起来而已 1.网上下载lamb库 生成需要的lib库,详情 ...
- avaweb学习总结(八)——HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- SYN blood攻击
SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击.效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求. 说到原理,还得从TCP如 ...