前言:陆续使用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. C语言 统计一串字符中空格键、Tab键、回车键、字母、数字及其他字符的个数(Ctrl+Z终止输入)

    //凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ #include<stdio.h> void main(){ , num=, blank=, ...

  2. 【工具大道】UML的点点滴滴

    本文地址 点击关注微信公众号 wenyuqinghuai 分享提纲: 1. 概述 2. UML类图 3. UML时序图 4. 参考资料   1.概述   1.1)百度百科:           又称统 ...

  3. Teradata 终止回滚方法(rcvmanager工具)

    1.使用root用户登录数据库节点 ssh root 2.启动database window cnsterm 3.启动rcvmanager start rcvmanager 4.确认utiltiy在哪 ...

  4. [1] YOLO 图像检测 及训练

    YOLO(You only look once)是流行的目标检测模型之一, 原版 Darknet 使用纯 C 编写,不需要安装额外的依赖包,直接编译即可. CPU环境搭建 (ubuntu 18.04) ...

  5. 在asp.net web api中利用过滤器设置输出缓存

    介绍 本文将介绍如何在asp.net web api中利用过滤器属性实现缓存. 实现过程 1,首先在web.config文件下appsettings下定义“CacheEnabled”和“CacheTi ...

  6. [CQOI2018]破解D-H协议

    嘟嘟嘟 这不就是个bsgs板儿嘛. 顺便就复习了一下bsgs和哈希表. 头一次觉得我的博客这么好用,一下就懂了:数论学习笔记之高次不定方程 这里再补充几点: 1.关于这一段代码: int S = sq ...

  7. 水题:P2799 国王的魔镜

    思路:简单模拟即可.判断一下是不是回文,是回文看长度是不是偶数.是偶数的话,说明又可能是回文.依次这样处理.但是只要长度为奇数则一定是原来的长度直接输出即可. #include<iostream ...

  8. Python:Day08 文件操作

    能调用方法的一定是对象! 文件的操作分为三步: 1.打开文件 2.操作文件 3.关闭文件 f= open('小重山','r',encoding='utf8') #以读的方式打开一个文件,如果文件不存在 ...

  9. day1 计算机组成、操作系统

    一:编程与编程的目的 1.什么是语言?什么是编程语言? 语言是一个事物与另一个事物沟通的介质. 编程语言是程序员与计算机沟通的介质. 2.什么是编程?为什么要编程? 编程是程序员将自己想要让计算机做的 ...

  10. springboot中使用freemarker生成word文档并打包成zip下载(简历)

    一.设计出的简历模板图以及给的简历小图标切图         二.按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件:    三.直 ...