.Net各版本新特性
序言
语言版本 | 发布时间 | .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各版本新特性的更多相关文章
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.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. ...
- IOS第三天-新浪微博 - 版本新特性,OAuth授权认证
*********版本新特性 #import "HWNewfeatureViewController.h" #import "HWTabBarViewController ...
- 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- Atitit 发帖机系列(8) 词法分析器v5 版本新特性说明)
Atitit 发帖机系列(8) 词法分析器v5 版本新特性说明) v5 增加对sql单引号的内部支持.可以作为string 结构调整,使用递归法重构循环发..放弃循环发. V4 java dsl词 ...
- [iOS微博项目 - 1.7] - 版本新特性
A.版本新特性 1.需求 第一次使用新版本的时候,不直接进入app,而是展示新特性界面 github: https://github.com/hellovoidworld/HVWWeibo ...
- framework各版本新特性(为面试准备)
菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...
- 《转》MySQL 5.7版本新特性连载
MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起.根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来 ...
- 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.----------- ...
- 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的原理 ...
随机推荐
- DS01--抽象数据类型
一.作业内容 二.数据结构.函数说明 1.头文件 common.h 2.数据结构 Rational.h 三.代码实现说明 1.构造有理数T 2.销毁有理数T 3.e返回有理数的分子或分母 4.用e改变 ...
- IP ,路由
ifconfig 命令 ip信息 enp0s3: flags=4163<UP(已经启用),BROADCAST(支持广播),RUNNING,MULTICAST(支持多播)> ...
- 词法分析用c++实现的
#include<stdio.h>#include<string.h>int i,j,k,sign,flag,number,run;char ch;char word[10]; ...
- PAT 甲级 1043 Is It a Binary Search Tree
https://pintia.cn/problem-sets/994805342720868352/problems/994805440976633856 A Binary Search Tree ( ...
- 最简单的Linux下apache+mysql+php安装
转载:http://www.jb51.net/article/29843.htm ubuntu下需要先更新系统后 流程笔记: 1.打开终端,输入“sudo apt-get install apache ...
- Windows搭建Log4Net+FileBeat+ELK日志分析系统过程
参考博客:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/yanbinliu/p/6208626.html ; ...
- 第194天:js---函数对象详解(arguments、length)
一.函数即对象 function add1(a,b){ return a+b; } //Function对象的实例 -- 高级技巧 --- 写框架必须用的... //前面表示参数,后面表示函数语句 v ...
- 第157天:canvas基础知识详解
目录 一.canvas简介 1.1 什么是canvas?(了解) 1.2 canvas主要应用的领域(了解) 二.canvas绘图基础 2.0 sublime配置canvas插件(推荐) 2.1 Ca ...
- 题解 P1420 【最长连号】
这个题过去的同学可以再来一题(P1567 统计天数): https://www.luogu.org/problemnew/show/P1567 是的,这个题其实也不是很难,就是前后比较,将天数压栈, ...
- 洛谷 P4139 上帝与集合的正确用法
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...