(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版》 - 书摘精要的更多相关文章

  1. 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-

    1.0.0 Summary Tittle:[EatBook]-NO.2.EatBook.2.JavaArchitecture.1.001-<修炼Java开发技术在架构中体验设计模式和算法之美&g ...

  2. 《修炼Java开发技术 在架构中体验设计模式和算法之美》 - 书摘精要

    (P7) 建议直接加入到软件公司中去,这样会学到很多实际的东西: 程序员最主要的发展方向是资深技术专家,无论是 Java..Net 还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师: 增强 ...

  3. 测试开发技术:DOM中 innerHTML、innerText、outerHTML、outerText的区别

    测试开发技术:DOM中 innerHTML.innerText.outerHTML.outerText的区别   我们在做web自动化的过程中通过dom处理web页面元素,那么你就要了解innerHT ...

  4. Java基础语法(8)-数组中的常见排序算法

    title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...

  5. Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师

    一.分布式架构体系 分布式怎么来的.传统的电信.银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正也不缺钱,IBM小型机,大型机,采购了堆 ...

  6. 2020 年最流行的 Java 开发技术

    不知不觉间,2020 年即将于十几天之后到来,作为技术圈中你,准备好迎接最新的变化了吗?在本文中,我们将以编程界最常用的编程语言 Java 为例,分享最为主流的技术与工具. 作者 | divyesh. ...

  7. 手机端UC浏览器,在java开发的下载功能中存在的问题?

    在java web开发中,不同浏览器对下载文件的格式有不同的要求,有时会出现视频,音频等文件无法下载的问题.我在开发中,也遇到类似的问题,觉得很苦恼. 经过百度和请教学习,得到2个解决方案. 首先得到 ...

  8. 个人总结的一个中高级Java开发工程师或架构师需要掌握哪几点!

    今天,我来唠叨几句~~ 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.今天为大家分享Java程序员学习的6个小技巧. 1.一定要看书 现在学习Java变得比以前容 ...

  9. Java开发技术

    1.基础技术 数据结构与算法   逻辑结构:数据对象中的数据元素之间的逻辑关系 1.集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系. 2.线性结构:线性结构中的数据元素之间是一对一的关 ...

  10. 【饿了么】招聘Java开发工程师、架构师

    3年以上实际工作经验,本科及以上学历. 具有良好的编程基础( 比如熟悉HTTP.多线程.Socket.JVM.基本的数据结构和算法等). 熟悉Java语言以及相关的服务器(比如Tomcat).工具(M ...

随机推荐

  1. 《Python 机器学习》笔记(二)

    机器学习分类算法 本章将介绍最早以算法方式描述的分类机器学习算法:感知器(perceptron)和自适应线性神经元. 人造神经元--早期机器学习概览 MP神经元 生物神经元和MP神经元模型的对应关系如 ...

  2. 剑指offer 面试8题

    面试8题: 题目:二叉树的下一个节点 题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 解题思路:详见剑 ...

  3. Spring boot cassandra - nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException

    1.在Pom.xml添加spring-boot-starter-data-cassandra依赖: <dependency> <groupId>org.springframew ...

  4. knockout注释标签----逻辑判断(学习笔记,欢迎拍砖)

    使用knockout绑定数据时,需要进行判断处理 <!-- ko if:$root.ifHaveVideo($data) --> 这里不是被注释掉的代码 是逻辑判断代码 有效的 <d ...

  5. LeetCode:旋转图像【48】

    LeetCode:旋转图像[48] 题目描述 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使 ...

  6. Python 7 多线程及进程

    进程与线程: 进程的概念: 1.程序的执行实例称为进程. 2.每个进程都提供执行程序所需的资源.一个进程有一个虚拟地址空间.可执行代码.对系统对象的开放句柄.一个安全上下文.一个独特的进程标识符.环境 ...

  7. iOS 当公司有人向你提问,你该如何应对?

    今天 因为iOS 开发的内部版本号耿耿于怀好久,释然后让我有了一个新想法:从前,能让我兴奋的点是解决一个有一个拗脑筋的问题,见大部分博客便知,都是技术方面的积累. 那么从今天起我决定让自己有个新起点, ...

  8. UI控件之UIView与动画

    UIView:用来展示用户的界面,响应用户的操作(继承自UIResponder) UIView的作用:绘图.动画.处理事件 UIView可以包含和管理子视图,并且决定子视图的位置大小 获取所有的子视图 ...

  9. CentOS7在VMWare12中安装后不能上网解决办法

    首先要保证你的VMWare Workstation12 在安装号CentOS7后没改动什么关于网络相关的. 1.我的电脑一开始用的是VMWare WorkStations10,发现VMnet8根本不通 ...

  10. Sourse Insight使用教程及常见的问题解决办法

    1.下载安装 2.创建项目new project(注意不是file-->new ),而是project-->new project,输入项目名称和密码. 3.添加文件,其实就是将你的整个项 ...