【c#】6.0与7.0新特性介绍记录
c#发展史

引用地址:https://www.cnblogs.com/ShaYeBlog/p/3661424.html
6.0新特性
1.字符串拼接优化
语法格式:$”string {参数}”
解释:以$符号开头开始字符串,其中以{}来进行传参,可以多个参数累加
例如:var results = $"Hello {Name}";
2.null检测运算符
语法格式:【 ?.】
解释:需要判断的对象值后面跟随?号符号直接进行判断是否为空,然后条件不为空后需要执行的在“.”之后执行
例如:
Program pro = new Program();
Console.WriteLine(pro?.GetCnblogsSite()); public string GetCnblogsSite()
{
return "http://www.cnblogs.com/yanbigfeg";
}
3.自动化属性
语法格式:attribute{get;set}="";
解释:对象属性后面直接可以进行赋值操作。像普通赋值一样。
例如:public string name {get;set}=“张三”;
4.表达式方法体
语法格式:=》
解释:一句话的那种方法体,可以使用箭头函数,不需要大括号,更加简便
例如: public ActionResult index ()=> View();
5.引用静态类
解释:可以直接引用静态类
例如:using static System.Math;
6.带索引的对象初始化器
解释:就是形如字典那种形式可以直接通过索引初始化
例如:var dic = new Dictionary<int, string> { [0]="第一个值",[1]= "第二个值"};
7.catch和finally 中使用await
解释:在5.0中await是不能在catch和finnaly块中使用的,在6.0移除了此限制。
8.out参数写法
例如:int.TryParse("123", out int x); 可以直接用的时候才定义
9.结构体可以包含无参函数
解释:在以前结构体是不可以包含显式的无参构造函数的,现在可以了
7.0新特性
1.元组
语法格式:Tuple
解释:可以创建不同的类型到一个集合中,然后进行返回,返回使用Item1,Item2....你以为就是这些东西吗,错了然这是4.0的东西了,现在7.0又给我们进行了优化。不过需要引用System.ValueTuple
例如:
static void Main(string[] args)
{
var data=GetFullName();
Console.WriteLine(data.a); //可用命名获取到值
Console.WriteLine(data.b);
Console.WriteLine(data.c);
Console.ReadLine(); }
//方法定义为多个返回值,并命名
private static (string a,string b,string c) GetFullName()
{
return ("a","b","c");
}
又例如:
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");
}
在补充一下原写法形式
//元组数据创建
public Tuple<int, string> GetTuple()
{
return Tuple.Create(, "");
}
//获取元组值
var result = GetTuple();
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
2.匹配模式
2.1针对is的小扩展
格式:a is type b
解释:参数a是不是这个类型如果是就赋值给b然后在使用b做操作
例如:object a = 1;if (a is int c)Console.WriteLine(c);
2.2switch的小扩展
格式 :case type a: 以及筛选值的case type a when a<0:
解释:case可以针对类型进行匹配和根据类型匹配后在进行条件筛选
3.ref的改动
解释:ref在以前只是用作于参数,在7.0中ref可以作为本地变量和返回值使用。
4.局部函数
解释:与局部变量类似,只在特定的函数中可以访问的函数。有点类似于func委托的感觉可以在内部定义一个局部方法临时使用,具体区别还没搞清除。
int a = ;
int add(int c)
{
return c + ;
}
Console.WriteLine(add(a));
5.表达式方法体扩展
解释:在6.0中一句话方法可以简写,但是构造函数,析构函数,属性访问器不可以,在7.0对此进行了扩展
例如:
// 构造函数的表达式写法
public CaCheContext(string label) => this.Label = label; // 析构函数的表达式写法
~CaCheContext() => Console.Error.WriteLine("Finalized!"); private string label; // Get/Set属性访问器的表达式写法
public string Label
{
get => label;
set => this.label = value ?? "Default label";
}
6.数值文字语法改进
格式:_
解释:运行数值中间使用“_”分割符,完全是为了可读性。没有其他实际意义。
【c#】6.0与7.0新特性介绍记录的更多相关文章
- Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性
Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...
- Jdk5.0中出现的新特性
掌握jdk5.0中出现的新特性1.泛型(Generics)2.增强的"for"循环(Enhanced For loop)3.自动装箱/自动拆箱(Autoboxing/unboxin ...
- C#6.0 中的那些新特性
C#6.0 中的那些新特性 前言 VS2015在自己机器上确实是装好了,费了老劲了,想来体验一下跨平台的快感,结果被微软狠狠的来了一棒子了,装好了还是没什么用,应该还需要装Xarmain插件,配置一些 ...
- Android 5.0(棒棒糖))十大新特性
Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...
- Android 7.0(牛轧糖)新特性
Android 7.0(牛轧糖)新特性 谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan A ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...
- webpack 4.0.0-beta.0 新特性介绍
webpack 可以看做是模块打包机.它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式 ...
- Pivotal Greenplum 6.0 新特性介绍
Pivotal Greenplum 6.0 新特性介绍 在1月12日举办的Greenplum开源有道智数未来技术研讨会上,Pivotal中国研发中心Greenplum 产品经理李阳向大家介绍了Pi ...
- [转帖]Pivotal Greenplum 6.0 新特性介绍
Pivotal Greenplum 6.0 新特性介绍 https://cloud.tencent.com/developer/news/391063 原来 greenplum 也是基于pg研发的. ...
随机推荐
- DX与OpenGL投影矩阵的区别
之前学习DX和OpenGL时到是知道一点,但是没仔细研究过,只是跟着教程抄个公式就过了,看双API引擎时发现转换时是个问题,必须搞懂,gamedev上找了个解释,希望用得上. https://www. ...
- clickhouse安装使用文档
Clickhouse简介 Clickhouse是什么 1. 开源的列存储数据库管理系统 2. 支持线性扩展 3. 简单方便 4. 高可靠性 5. 容错(支持多主机异步复制,可以跨多个数据中心部署. 单 ...
- 【repost】javascript:;与javascript:void(0)使用介绍
有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法 最近看了好几个关于<a>标签和javascript:void(0)的帖子,谨记于此,以资查阅. 注:以下代 ...
- VS从数据库表生成Model代码
1.工具——扩展和更新——安装下列插件 2.如图所示,在项目或者MODEL文件夹下添加 3.如图所示,生成了一个datanase.11 4.打开该文件后,将数据库连接字符串改为你自己项目中WebCof ...
- MySQL体系结构和存储引擎概述
MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...
- 《你不知道的javascript》读书笔记2
概述 放假读完了<你不知道的javascript>上篇,学到了很多东西,记录下来,供以后开发时参考,相信对其他人也有用. 这篇笔记是这本书的下半部分,上半部分请见<你不知道的java ...
- [Mac]macOS Mojave :发现 Mac 的新功能。
1.深色模式 换种颜色看 Mac “深色模式”为桌面和内建应用带来更生动的外观,可让您轻松专注于最重要的内容. 若要在浅色和深色外观之间切换,请打开“系统偏好设置”并点按“通用”. 2.叠放 整理桌面 ...
- XStream进行xml和bean互转
加入pom <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>x ...
- [译]ElasticSearch vs. Solr
在Gen2产品的早期阶段, 我们事实上是失败的, 这促使我们重新审视我们现有的技术栈. 我们仔细分析系统中的每个独立的组件,并记录下来, 当然其中也包括构成我们核心功能的搜索引擎技术. 在我们的通用日 ...
- 关于@font-face的使用
以前在写网页的时候,总是使用浏览器默认的字体,因此从未使用过@font-face,然而,最近在做官网的时候,UI规定了字体,要在所有浏览器下都展现同一效果.多番查询下,发现@font-face用起来是 ...