序言

语言版本 发布时间 .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. UVALive 6912 Prime Switch 暴力枚举+贪心

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  2. 使用git提交代码的一些小心得

    1.不进行push不能运行的代码,如果需要提交,可以先注释,保证其他人pull时,可以得到能够正常使用的代码 2.每做完一件事,写一条描述,一次提交.不要等写了一堆代码,然后写一堆描述,这样如果需要查 ...

  3. C++ Primer Plus学习:第二章

    C++入门第二章:开始学习C++ 进入C++ 首先,以下是一个C++程序: //myfirst.cpp 显示一行文字 #include<iostream> //预处理器编译指令 int m ...

  4. QList和QVector使用

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QList和QVector使用     本文地址:http://techieliang.com ...

  5. 【第九周】psp

        代码累计 300+575+475+353+620=2223 随笔字数 1700+3000+3785+4210+4333=17695 知识点 java反射机制 数据库技术 动态规划算法 pyth ...

  6. 网络流量统计using ADB

    /proc/net/xt_qtaguid/stats 基本覆盖目前所有机型且统计流量全面 adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#) ...

  7. FZU2128_最长子串

    题目说给你一个长串,要你选一个最长子串,不包括任何一个给定串为子串. 建立一个自动机,每个点保存的信息为当前这个状态为结尾最长可以有多长? 然后....就可以了... #include <ios ...

  8. CF487E-Tourists

    题意 给出一个\(n\)个点\(m\)条边的无向图,给出每个点的初始点权,\(q\)次操作: 修改一个点的点权 询问两点间的所有路径中最小点权最小的路径上的最小点权 \(n,m,q\le 10^5,w ...

  9. BZOJ 2141 排队(树状数组套主席树)

    解法很多的题,可以块套树状数组,可以线段树套平衡树.我用的是树状数组套主席树. 题意:给出一段数列,m次操作,每次操作是交换两个位置的数,求每次操作后的逆序对数.(n,m<=2e4). 对于没有 ...

  10. shell的tr命令

    tr,translate的简写,即翻译的意思.主要用来从标准输入中通过替换或删除操作进行字符转换.只接受标准输入,不接受文件参数. 命令语法: tr [–c/d/s/t] [SET1] [SET2] ...