本文按照C#语言的发展历史,介绍C#每个版本的新增特性,主要参考微软官方文档。了解这些语言特性可以帮助我们更高效的编写C#代码。

C# 1.0

与Visual Studio .NET 2002一起发布,该版本的C#非常像Java。

C# 1.2

随Visual Studio .NET 2003一起发布,主要是一些小改进。值得注意的是,从此版本开始,当IEnumerator实现IDisposable时,foreach循环中生成的代码会在IEnumerator上调用Dispose。

C# 2.0

与Visual Studio 2005一起发布。自2.0开始,C#打好了基础,开始追求解决一些严重影响开发者的难点。

  • 泛型:使用泛型优于创建派生自ArrayList的ListInt或强制转换方式
  • partial class
  • 匿名方法:delegate运算符创建一个可以转换为委托类型的匿名方法。从C# 3.0开始,可使用lambda表达式创建匿名方法。
  • 可空类型:可空类型T?表示其基础类型T的所有值及额外的null值。
  • 迭代器:允许使用foreach来检查List(或其它可枚举类型)中的所有项
  • 协变和逆变:实现数组类型、委托类型和泛型类型参数的隐式引用转换

C# 3.0

与Visual Studio 2008一起发布,但完整功能是在.NET Framework 3.5版本中发布的。此版本标志着C#发展过程中的重大更改。

C# 4.0

随Visual Studio 2010一起发布。

C# 5.0

随Visual Studio 2012一起发布,主要工作是适用于异步编程的async和await模型。

C# 6.0

随Visual Studio 2015一起发布。

C# 7.0

与Visual Studio 2017一起发布。

C# 7.1 7.2 7.3

此版本开始C#可以单点发行,编译器有-refout和-refonly两个选项,可用于控制引用程序集生成。

C# 8.0

专门面向.NET Core的第一个主要C#版本。

C# 9.0

.NET 5.0支持C# 9.0

C#语言特性及发展史的更多相关文章

  1. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  2. 【转】浅思OC的语言特性

    算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...

  3. Pro ASP.NET MVC –第四章 语言特性精华

    C#语言有很多特性,并不是所有的程序员都了解本书我们将会使用的C#语言特性.因此,在本章,我们将了解一下作为一个好的MVC程序员需要了解C#语言的特性. 每个特性我们都只是简要介绍.如果你想深入了解L ...

  4. 浅思OC的语言特性

    算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...

  5. XAML 名称范围 (x:) 语言特性

    本节介绍为 Windows 运行时实现的 XAML 语言特性的参考信息. 本部分内容 主题 描述 x:Class 属性 配置 XAML 编译,在标记和代码隐藏之间连接分部类.代码分部类在一个独立的代码 ...

  6. C++ 语言特性的性能分析

    转载:http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487244.html      大多数开发人员通常都有这个观点,即汇编语言和 C 语 ...

  7. C# 动态语言特性,dynamic 关键字研究

    1       动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...

  8. 理解Javascript的动态语言特性

    原文:理解Javascript的动态语言特性 理解Javascript的动态语言特性 Javascript是一种解释性语言,而并非编译性,它不能编译成二进制文件. 理解动态执行与闭包的概念 动态执行: ...

  9. c#跟objective-c语言特性

    c#跟objective-c语言特性的对比 拿c#语言跟objective-c做个对比,记录下自己认为是差不多的东西. 学过objc的人相信对category这个东西肯定不陌生,它可以让我们在没有源码 ...

随机推荐

  1. labuladong 算法小抄

    <labuladong的算法小抄官方完整版> 本书目前可以手把手带你解决 110 道 LeetCode 算法问题,而且在不断更 新,全部基于 LeetCode 的题目,涵盖了所有题型和技巧 ...

  2. Codeforces Round #630 (Div. 2)

    题目链接:https://codeforces.com/contest/1332 A. Exercising Walk 可走的最远距离:左:x-x1,右:x2-x,下:y-y1,上:y2-y 如果可以 ...

  3. KMP(算法描述)

    #include<iostream> using namespace std; const int N=10010,M=100010; int n,m; char p[N],s[M]; i ...

  4. c语言实现--双向循环链表操作

    1,双向链表相当于两个单向循环链表. 2,双向链表的结点定义. 1 struct DULNode 2 { 3 int data; 4 struct DULNode * prior; 5 struct ...

  5. 【noi 2.6_4982】踩方格(DP)

    题意:一个无限大的方格矩阵,能向北.东.西三个方向走.问走N步共有多少种不同的方案. 解法: f[i]表示走 i 格的方案数. 状态转移方程推导如下--设l[i],r[i],u[i]分别为第 i 步向 ...

  6. Pyqt5 安装

    window 安装PyQt5 pip install pyqt5 pip install pyqt5-tools  (安装常用的Qt工具) 添加环境变量 变量名: QT_QPA_PLATFORM_PL ...

  7. Redis 管理命令

    INFO 命令 # 查看redis相关信息 127.0.0.1:6379> info # 服务端信息 # Server # 版本号 redis_version:3.2.12 # redis版本控 ...

  8. Linux-用户/用户组身份提权

    sudo 身份提权(更安全) su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全. 为了改进这个问题,从而产生了su ...

  9. pyhook的简单使用

    实验内容: 通过python编程调用windows的api,编写键盘和鼠标监控的hook,将相关信息保存记录到txt文档中. 实验步骤: 1.Hook技术,pyHook3和pywin32简介 1.1  ...

  10. Leetcode(206)-反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路:反转链表很简 ...