C#复习笔记(1)--C#开发的进化史
前言:陆续使用C#已经有一年半的时间。中间做过一些应用,现在为了有更高的提升,决定重新看一遍C# in depth,并总结一些笔记。
一、从简单的数据类型开始

上面是C#1到C#4中的一部分演变历程。可以看到C#演变为越来越好的封装性、越来越强的类型化以及越来越容易的初始化。
二、排序和过滤

弱类型有很多缺点,首先必须针对每个特定的类型实现一个排序的类型,在C#2中出现了泛型,可以创建一个统一的排序算法,同时C#2的匿名方法(更方便的创建委托)使得可以直接传入一个委托进行比较,语法上的便捷加快了程序的编写进度。在C#3中出现的lambda表达式是匿名方法更好用,使代码更易读。同时,C#3的扩展方法使得在不改变原有类的基础上为原有类提供新的功能,并且调用起来就像是实例方法一样方便。
三、处理未知数据

C#2的可空值类型为我们添加了一个便捷的语法糖比如我们可以用int?来表示一个可为空值的值类型。他表示的实际类型是一个Nullable<T>,这为我们在编写数据库方面的编程时更加有效率。在参数未知的情况下,C#4的可选参数为那些由客户端(方法调用方)传入的实参提供了一个默认值,以防止传入一些无效的参数。有了Nullable<T>,在处理数据集类型时,泛型配合lambda表达式也能够处理一些null值。如lst.where(p=>p.value==null)。其中value是一个int?类型的数据。
四、LINQ简介
LINQ是一个非常棒的C#特性,前后经历了几个版本的铺垫最终成型。他允许我们像操作数据库一个操作内存中的数据,当然也可以通过IQuerable来编写表达式并最终在数据库中进行查询。为了LINQ,C#催生出像隐式局部变量(var)、匿名类型、匿名方法、lambda等(匿名方法和lambda都属于委托的概念范畴)等概念来互相配合直到最后产生的LINQ这个概念。当然,上述提到的那些概念单独使用起来也很棒。
五、COM和动态类型
C#4的一个最大的特性就是动态类型和互操作。内建了一个DLR(动态语言运行时),这允许我们像使用python一样使用dynamic关键字来使用动态类型。并且允许我们与想IronPython这样的语言来交互。
六、轻松编写异步代码
C#5最大的特性就是改善异步,新推出的async和await关键字使之前意大利面条式的异步代码消失不见,转而使用一种类似同步的代码来表达异步的思想。
上面就是C#进化的一个总体的过程。接下来会逐步探索C#中的难点
C#复习笔记(1)--C#开发的进化史的更多相关文章
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Angular复习笔记6-依赖注入
Angular复习笔记6-依赖注入 依赖注入(DependencyInjection)是Angular实现重要功能的一种设计模式.一个大型应用的开发通常会涉及很多组件和服务,这些组件和服务之间有着错综 ...
- angular复习笔记4-模板
Angular复习笔记4-模板 简介 模板是一种自定义的标准化页面,通过模板和模板中的数据结合,可以生成各种各样的网页.在Angular中,模板的默认语言是HTML,几乎所有的HTML语法在模板中都是 ...
- 状压DP复习笔记
前言 复习笔记第4篇.CSP RP++. 引用部分为总结性内容. 0--P1433 吃奶酪 题目链接 luogu 题意 房间里放着 \(n\) 块奶酪,要把它们都吃掉,问至少要跑多少距离?一开始在 \ ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
随机推荐
- SecureCRT窗口输出代码关键字高亮设置
设置方法: 下载配置文件:本站下载:Highlights.css (下载重命名为 Highlights.ini ) 原站下载:http://download.feralpacket.org/La ...
- 【PS技巧】常用概念和功能操作
常用概念 1.画布大小与图像大小 画布大小是图像背景的大小,即画纸.图像大小是当前编辑的图层的所有对象大小,即画纸上的画. 常用功能操作 1.打开和新建功能 打开图片:Ctrl+O或双击工作区 图片垂 ...
- ES5-ES6-ES7_Generator 函数
Generator函数的概述 Generator 函数是 ES6 提供的一种异步编程解决方案 Generator函数指的是一种新的语法结构,是一个遍历器对象生成器,它内部可以封装多个状态,很适合用于异 ...
- [HEOI2016/TJOI2016]求和
嘟嘟嘟 好多人(神仙)都说这是NTT例题,然后我就做了-- 做这题,需要一下前置技能: 1.第二类斯特林数 2.NTT 3.没有公式恐惧症 额--不会斯特林数的话(就像我),知道通项公式也行. 这个博 ...
- 001_自定义过滤及添加文件内容脚本(nginx)
一.工作中遇到sed添加及修改在nginx末尾添加太麻烦了 需求:随意查找添加一条以前不存在的内容加到"}"前一行 实现: #!/usr/bin/env python # codi ...
- jenkins+svn+python+appium启动+mail+html报告
第一步:jenkins从svn中获取最新的测试代码 1.jenkins启动,进入jenkins目录,使用“java -jar jenkins.war”启动(安装后,jenkins已自启动,不用再自己启 ...
- oracle(环境搭建一)
图形化安装Oracle11gR2 环境: verify: CentOS release 6.5 (Final) release:CentOS release 6.7 (Final) 1.登录到root ...
- 深入理解mongodb查询条件语句
阅读目录 1. 理解:"$lt"."$lte"."$gt" 和 "$gte" 2. 理解 '$ne' 3. 理解 &qu ...
- centos 7 安装mqtt 修改用户名和密码
我先新买个Centos 的系统 咱登录呢就用这个软件,主要是方便,可以少安装一些东西 根据自己的系统选择,上面的是32位的. 输入 root 回车 输入密码然后回车 输入的时候什么也不显示 输入 c ...
- AbstractQueuedSynchronizer
1 简介 AbstractQueuedSynchronizer简称AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器.JDK1.5中提供的java.util.concurrent包中的大多数的 ...