前言:陆续使用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#开发的进化史的更多相关文章

  1. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  2. Angular复习笔记6-依赖注入

    Angular复习笔记6-依赖注入 依赖注入(DependencyInjection)是Angular实现重要功能的一种设计模式.一个大型应用的开发通常会涉及很多组件和服务,这些组件和服务之间有着错综 ...

  3. angular复习笔记4-模板

    Angular复习笔记4-模板 简介 模板是一种自定义的标准化页面,通过模板和模板中的数据结合,可以生成各种各样的网页.在Angular中,模板的默认语言是HTML,几乎所有的HTML语法在模板中都是 ...

  4. 状压DP复习笔记

    前言 复习笔记第4篇.CSP RP++. 引用部分为总结性内容. 0--P1433 吃奶酪 题目链接 luogu 题意 房间里放着 \(n\) 块奶酪,要把它们都吃掉,问至少要跑多少距离?一开始在 \ ...

  5. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  6. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  7. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  8. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  9. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  10. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

随机推荐

  1. 《Java大学教程》—第12章 案例研究--第2部分

    本章就是上一章的延续,主要是用GUI实现了控制界面. 编程练习:代码附件Hostel.java1.    正确运行2.    Runhostel.java3.    searchButton

  2. docker 中运行 mysql

    在宿主机Host的终端执行: 1. 搜索docker镜像仓库中提供的mysql docker search mysql 2.下载mysql镜像 docker pull mysql 3.改变目录权限,非 ...

  3. C. Queen Codeforces Round #549 (Div. 2) dfs

    C. Queen time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  4. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  5. C#反射の一个泛型反射实现的网络请求框架

    点击下载源码 C#反射の反射详解(点击跳转)C#反射の反射接口(点击跳转)C#反射反射泛型接口(点击跳转)C#反射の一个泛型反射实现的网络请求框架(点击跳转)

  6. Python中使用class(),面向对象有什么优势 转自知乎

    https://www.zhihu.com/question/19729316 首先我是辣鸡,然后这个问题的确有点意思 首先,类是一个集合,包含了数据,操作描述的一个抽象集合 你可以首先只把类当做一个 ...

  7. SQL Access Advisor in Oracle Database 10g

    The SQL Access Advisor makes suggestions about indexes and materialized views which might improve sy ...

  8. day14(1)--递归、匿名函数、内置函数

    一.递归 定义:本质上是回溯和递推 回溯:询问答案的过程 递推:推出答案的过程 前提: 回溯到一个有结果的值开始递推 回溯与递推的条件要有规律 方式: 直接递归:自己调用自己 间接递归:通过别人来调用 ...

  9. LCA--倍增法

    一般来求LCA有3种方法 1.倍增 2.RMQ+欧拉序 3.tarjan(离线) 本文将倍增求lca 这个算法是很常见很常见的 也是较好理解的 (我也不明白假期学长讲的时候我为什么死活都不明白 自闭q ...

  10. eclipse svn合并小结

    合并时候,当前在哪个分支上,哪个分支即为“主干” 弱化主干 分支的概念.svn原则上并没有主干 分子 主 从的概念.从一个项目衍生(分支)出来的版本,都可以是主,也可以是从. 版本之间互相合并原理 文 ...