序言

语言版本 发布时间 .NET Framework要求
C# 1.0 2002.1 .NET Framework 1.0
C# 1.1\1.2  2003.4 .NET Framework 1.1
C# 2.0  2005.11 .NET Framework 2.0 
C# 3.0 2007.11 .NET Framework 2.0\3.0\3.5
C# 4.0 2010.4 .NET Framework 4.0
C# 5.0 2012.8 .NET Framework 4.5
C# 6.0 2015.7 .NET Framework 4.6
C# 7.0 2017.3 .NET Framework 4.6.2
C# 7.1 2017.6 .NET Framework 4.7
C# 7.2 2017.11 .NET Framework 4.7.1
C# 7.3 2018.5 .NET Framework 4.7.2
C# 8.0 2019.4 .NET Framework 4.8

C# 6.0 (2015)

静态导入
异常筛选器
自动属性初始化表达式
Expression bodied 成员
Null 传播器
字符串内插
nameof 运算符
索引初始值设定项

字典初始化

 class StudentName
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int ID { get; set; }
} class CollInit
{
Dictionary<int, StudentName> students = new Dictionary<int, StudentName>()
{
{ , new StudentName {FirstName="Sachin", LastName="Karnik", ID=}},
{ , new StudentName {FirstName="Dina", LastName="Salimzianova", ID=}},
{ , new StudentName {FirstName="Andy", LastName="Ruth", ID=}}
};
}

异常过滤器

 try
{ }
catch (Exception)
{ }
finally
{ }

表达式体成员

nameof 操作符

Console.WriteLine(nameof(Int32));

空合并运算符

??被称为【可空合并】运算符,是一个二目运算符,操作参数两枚,其完成的功能为对左参数判断之后进行赋值。

返回结果:如果左操作数不为空,则返回左操作数本身;如果左操作书为空,则返回右操作数。

格式:object1 ?? object2

int? x = null;
int y = x ?? -;
Console.WriteLine(string.Format("x={0},y={1}", x, y));

属性初始化

class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
Person person = new Person { Name = "Slark", Age = , Address = "Xi'an" };
List<int> intList = new List<int> { , , };
List<Person> personList = new List<Person>
{
new Person { Name = "Slark1", Age = , Address = "Xi'an1" },
new Person { Name = "Slark2", Age = , Address = "Xi'an2" },
new Person { Name = "Slark3", Age = , Address = "Xi'an3" }
};

静态引用

字符串插值

编程中经常用到字符串的拼接。

class Plane
{
public string Category { get; set; }
public string Name { get; set; }
public int State { get; set; }
}

C#6.0之前的方法:

var p = new Plane() { Category = "A", Name = "B", State =  };
var sb=new StringBuilder();
sb.Append(string.Format("Category={0},Name={1},State={2}",plan.Category,plane.Name,plane.State);

C#6.0之后的方法:

var p = new Plane() { Category = "A", Name = "B", State =  };
var sb=new StringBuilder();
sb.Append($"Category={p.Category},Name={p.Name},State={p.State}");

C# 7.0 (2017)

Out 变量
元组和析构函数
模式匹配
本地函数
已扩展 expression bodied 成员
Ref 局部变量和返回结果
其他功能包括:
弃元
二进制文本和数字分隔符
引发表达式

重点是缩减了使用 out 关键字的变量声明,并通过元组实现了多个返回值。

表达式体成员

局部方法

Out 变量

模式匹配

static dynamic Add(object a)
{
dynamic data;
switch (a)
{
case int b:
data=b++;
break;
case string c:
data= c + "aaa";
break;
default:
data = null;
break;
}
return data;
}

匹配模式的Case When筛选

switch (a)
{
case int b when b < :
data = b + ;
break;
case int b:
data=b++;
break;
case string c:
data= c + "aaa";
break;
default:
data = null;
break;
}

局部引用和引用返回

public static void DoSomeing()
{
//调用Dosmeing2
int data = Dosmeing2(, );
Console.WriteLine(data);
//定义局部函数,Dosmeing2.
int Dosmeing2(int a, int b)
{
return a + b;
}
}

元组

static void Main(string[] args)
{
var data = GetFullName();
Console.WriteLine(data.Item1);
Console.WriteLine(data.Item2);
Console.WriteLine(data.Item3);
Console.ReadLine();
}
static Tuple<string, string, string> GetFullName()
{
return new Tuple<string, string, string>("a", "b", "c");
}

解构元组

有的时候我们不想用var匿名来获取,那么如何获取abc呢?我们可以如下:

static void Main(string[] args)
{
//定义解构元组
(string a, string b, string c) = GetFullName(); Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.ReadLine(); } private static (string a,string b,string c) GetFullName()
{
return ("a","b","c");
}

C# 8.0(2019)

资料

https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-version-history

https://www.cnblogs.com/microsoft-zyl/p/9093748.html

https://blog.csdn.net/Abelia/article/details/93773280

.Net各版本新特性的更多相关文章

  1. Atitit opencv版本新特性attilax总结

    Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...

  2. Atitit mac os 版本 新特性 attilax大总结

    Atitit mac os 版本 新特性 attilax大总结 1. Macos概述1 2. 早期2 2.1. Macintosh OS (系统 1.0)  1984年2 2.2. Mac OS 7. ...

  3. IOS第三天-新浪微博 - 版本新特性,OAuth授权认证

    *********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...

  4. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  5. Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明)

    Atitit 发帖机系列(8)  词法分析器v5 版本新特性说明) v5  增加对sql单引号的内部支持.可以作为string 结构调整,使用递归法重构循环发..放弃循环发. V4 java dsl词 ...

  6. [iOS微博项目 - 1.7] - 版本新特性

    A.版本新特性 1.需求 第一次使用新版本的时候,不直接进入app,而是展示新特性界面 github: https://github.com/hellovoidworld/HVWWeibo       ...

  7. framework各版本新特性(为面试准备)

    菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...

  8. 《转》MySQL 5.7版本新特性连载

    MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起.根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来 ...

  9. Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结

    Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...

  10. atitit.atiOrm.js v2 q61 版本新特性.docx

    atitit.atiOrm.js v2 q61 版本新特性.docx 1. V1新特性如下1 1.1. V2规划,直接生成sql在js端1 2. Orm设计框架图1 2.1. atiOrm.js的原理 ...

随机推荐

  1. 软工实践-Alpha 冲刺 (10/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 完成所有界面的链接,整理与测试 展示GitHub当日代码/ ...

  2. struts2文件上传突破2M限制

    struts配置文件 <action name="upload" class="strutsFileUpload"> <result name ...

  3. map的默认排序和自定义排序

    STL的容器map为我们处理有序key-value形式数据提供了非常大的便利,由于内部红黑树结构的存储,查找的时间复杂度为O(log2N). 一般而言,使用map的时候直接采取map<typen ...

  4. HTTP vs HTTPS

    参考博文:HTTP与HTTPS的区别 HTTP与HTTPS的区别 一.HTTP和HTTPS的基本概念和区别 HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(T ...

  5. 三层神经网络自编码算法推导和MATLAB实现 (转载)

    转载自:http://www.cnblogs.com/tornadomeet/archive/2013/03/20/2970724.html 前言: 现在来进入sparse autoencoder的一 ...

  6. mybatis_mysql

    SELECT round(avg(c.AVG_DELAY_TIME)) as AVG_DELAY FROM `result_road_saturation_day` a LEFT JOIN info_ ...

  7. 西南大学校园网客户端共享网络之路由器开wifi

    1年前出了NetKeeper,让寝室只能一个人用一个账号,而且,在寝室平板手机什么的只能靠360wifi什么的来维持了,电脑一直不能关,确实让人不爽. 最近学校又出台了swu-wifi-dorm来让寝 ...

  8. 控件属性和InitializeComponent()关系:

    namespace Test22 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> priv ...

  9. 2月24日考试——ZYYS

    LSGJ zyys 战队的 CYA 小垃圾,被各位神佬出的题目搞得心态爆炸.于是他模仿了蔡老师给了你两个整数 n 和 m .让你计算字母表大小为 m ,(即可用 m 个字母)长度为 n ,不存在长度至 ...

  10. CF521D Shop 贪心

    题意: \(n\)个数,有\(m\)个操作,形如: 1,将\(x_i\)​改成\(val_i\)​ 2,将\(x_i\)加上\(val_i\)​ 3,将\(x_i\)​乘上\(val_i\) 其中第\ ...