序言

语言版本 发布时间 .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. HttpCookie Class

    提供创建和操作各 HTTP Cookie 的类型安全方法. #region 写入指定Cookie的值 +static void WriteCookie(string cookieName, strin ...

  2. lintcode-221-链表求和 II

    221-链表求和 II 假定用一个链表表示两个数,其中每个节点仅包含一个数字.假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式. 样例 给出 6->1-> ...

  3. Java实现的词频统计

    要求: 1.读取文件: 2.记录出现的词汇及出现频率: 3.按照频率降序排列: 4.输出结果. 概要: 1.读取的文件路径是默认的,为了方便调试,将要统计的文章.段落复制到文本中即可:2.只支持英文: ...

  4. 太平洋网络ip地址查询接口使用,返回json格式,默认返回jsonp

    http://whois.pconline.com.cn/ipJson.jsp?json=true

  5. Kafka发布订阅消息

    Maven <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-cli ...

  6. 第200天:js---常用string原型扩展

    一.常用string原型扩展 1.在字符串末尾追加字符串 /** 在字符串末尾追加字符串 **/ String.prototype.append = function (str) { return t ...

  7. jmeter同步定时器

    同步定时器是jmeter中一个比较重要的定时器,同步定时器,相当于一个储蓄池,累积一定的请求,当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起并发,可以用来做大数据量的并发请求. 验证 ...

  8. python传参

    写在前面 Python唯一支持的参数传递方式是『共享传参』(call by sharing) 多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本 ...

  9. 【刷题】BZOJ 2260 商店购物

    Description Grant是一个个体户老板,他经营的小店因为其丰富的优惠方案深受附近居民的青睐,生意红火.小店的优惠方案十分简单有趣.Grant规定:在一次消费过程中,如果您在本店购买了精制油 ...

  10. Spring Boot系列教程六:日志输出配置log4j2

    一.前言  spring boot支持的日志框架有,logback,Log4j2,Log4j和Java Util  Logging,默认使用的是logback日志框架,笔者一直在使用log4j2,并且 ...