异步编程的基础知识 C#5推出的async和await关键字使异步编程从表面上来说变得简单了许多,我们只需要了解不多的知识就可以编写出有效的异步代码。 在介绍async和await之前,先介绍一些基础的概念: 并发:同时做很多事情。 这个解释直接表明了并发的作用。终端用户程序利用并发功能,在输入数据 ...
查询表达式和LINQ to object(下) 接下来我们要研究的大部分都会涉及到透明标识符 let子句和透明标识符 let子句不过是引入了一个新的范围变量。他的值是基于其他范围变量的。let 标识符=表达式; 首先展示一个不适用let操作符来使用的按用户名称长度来排序: 可以看得出为了按名称排序被 ...
查询表达式和LINQ to object(上) 本章内容: 流式处理数据和延迟执行序列 标准查询操作符和查询表达式转换 范围变量和透明标识符 投影、过滤和排序 联接和分组 选择要使用的语法 LINQ中的概念介绍 序列 你当然应该对序列这个概念感觉很熟悉: 它通过IEnumerable 和 IEnum ...
扩展方法 扩展方法有以下几个需求: 你想为一个类型添加一些 成员; 你不需要为类型的实例添加任何更多的数据; 你不能改变类型本身, 因为是别人的代码。 对于C#1和C#2中的静态方法,扩展方法是一种更优雅的解决方案。 语法 并不是任何方法都能作为扩展方法使用—— 它必须具有以下特征: 它必须在一个非 ...
Lambda表达式和表达式树 先放一张委托转换的进化图 看一看到lambda简化了委托的使用。 lambda可以隐式的转换成委托或者表达式树。转换成委托的话如下面的代码: 转换成表达式树的话是下面的代码: 委托方面的东西前面都做了详细的介绍。我们主要学习表达式树 表达式树 表达式是当今编程语言中最重 ...
用智能的编译器来防错 本章的主要内容: 自动实现的属性:编写由字段直接支持的简单属性, 不再显得臃肿不堪; 隐式类型的局部变量:根据初始值推断类型,简化局部变量的声明; 对象和集合初始化程序:用一个表达式就能创建和初始化对象; 隐式类型的数组:根据内容推断数组的类型,从而简化数组的创建过程; 匿名类 ...
委托 前言:C#1中就已经有了委托的概念,但是其繁杂的用法并没有引起开发者太多的关注,在C#2中,进行了一些编译器上的优化,可以用匿名方法来创建一个委托。同时,还支持的方法组和委托的转换。顺便的,C#2中增加了委托的协变和逆变。 方法组转换 方法组这个词的含义来自于方法的重载:我们可以定义一堆方法, ...
一、递归方程 按照分治的思想,可以将一个递归的复杂度写成递归方程 一、解递归方程--猜然后证明 该方法又称为代入法,步骤如下: 1、猜解的形式 2、数学归纳法证明正确 例子: 我们假设有如下递归式: 我们猜其解为T(n)=O(nlgn),然后对递归式进行替换,得 特别注意:我们替换之后得出的结果必须 ...
分类:
编程语言 时间:
2018-03-24 14:26:17
阅读次数:
205
通过对C#1所搭建的核心基础的深入了解,可以知道之后的C#版本在C#1的基础上做了很多扩展,而这些扩展都是基于C#搭建的核心基础而来的。 委托 一、编写委托的过程 委托经常和C语言的“函数指针”挂钩。委托是方法参数化、函数式语言一个重要的表达方式。C#1中编写一个委托要经过四部: 1、声明委托类型 ...
一、几种比较复杂度的符号 数据结构有描述,相关严格数学定义也不想说了,就这么过了吧。 二、最大子数组的几种解决方法 从最复杂的暴力解法过渡到最简单的动态规划 解析和代码见这里:http://www.cnblogs.com/likaiming/p/8570205.html 三、作业调度问题 后面的动态 ...
分类:
编程语言 时间:
2018-03-24 13:27:50
阅读次数:
148