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中的数组在申明时 ...
随机推荐
- 设计模式のFlyweight(享元模式)----结构模式
一.产生背景 享元模式:它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件.通常物件中的部分状态是可以分享.常见做 ...
- ansible-playbook 进行批量安装tomcat8
ansible-playbook 进行安装tomcat操作 说明: get_url 中下载的内容直接到目的主机 安装的时候需要指定copy: no,说明需直接从目标主机进行安装包 [root@ans ...
- Node.js使用TCP通讯
原文地址:https://www.cnblogs.com/ay-a/p/9822057.html Node.js 的 net 模块可以方便的创建TCP 服务,,以下是使用 net 模块创建的tcp 服 ...
- 网站建设部署与发布--笔记3-部署Nginx
部署Nginx 操作系统CentOS 7.2 1.安装epel库 $ yum install epel-release -y 2.安装nginx $ yum -y install nginx 3.启动 ...
- ElasticSearch(站内搜索) 转发 https://www.cnblogs.com/xibei666/p/5929970.html
简介 Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合.Elasticse ...
- 错误RuntimeError: Invalid DISPLAY variable
原因:matplotlib的backend中的FltkAgg, GTK, GTKAgg, GTKCairo, TkAgg , Wx or WxAgg这几个backend都要求有GUI图形界面的 首先查 ...
- Flask 框架 debug=Ture 和Json解码:
Flask框架常用配置文件: 以下推荐四种方法: (一):创建一个配置类. (二):正常代码配置文件. 接下下来两种方法需要新建文件: 步骤为: 1:在当前目录下新建一个文件,名字为:config.i ...
- Mybatis学习总结(六)——高级映射(一对一,一对多,多对多)
一.订单商品数据模型 1.数据库执行脚本 创建数据库表代码: /*Table structure for table `t_user` */ CREATE TABLE t_user ( id INT ...
- 环境部署(四):Linux下查看JDK安装路径
在安装好Git.JDK和jenkins之后,就需要在jenkins中进行对应的设置,比如在全局工具配置模块,需要写入JDK的安装路径. 这篇博客,介绍几种常见的在Linux中查看JDK路径的方法... ...
- /dev/mem可没那么简单
这几天研究了下/dev/mem.发现功能非常奇妙,通过mmap能够将物理地址映射到用户空间的虚拟地址上.在用户空间完毕对设备寄存器的操作,于是上网搜了一些/dev/mem的资料. 网上的说法也非常统一 ...