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新特性介绍记录的更多相关文章

  1. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  2. Jdk5.0中出现的新特性

    掌握jdk5.0中出现的新特性1.泛型(Generics)2.增强的"for"循环(Enhanced For loop)3.自动装箱/自动拆箱(Autoboxing/unboxin ...

  3. C#6.0 中的那些新特性

    C#6.0 中的那些新特性 前言 VS2015在自己机器上确实是装好了,费了老劲了,想来体验一下跨平台的快感,结果被微软狠狠的来了一棒子了,装好了还是没什么用,应该还需要装Xarmain插件,配置一些 ...

  4. Android 5.0(棒棒糖))十大新特性

    Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...

  5. Android 7.0(牛轧糖)新特性

    Android 7.0(牛轧糖)新特性 谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息.目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan A ...

  6. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  7. webpack 4.0.0-beta.0 新特性介绍

    webpack 可以看做是模块打包机.它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式 ...

  8. Pivotal Greenplum 6.0 新特性介绍

    Pivotal Greenplum 6.0 新特性介绍   在1月12日举办的Greenplum开源有道智数未来技术研讨会上,Pivotal中国研发中心Greenplum 产品经理李阳向大家介绍了Pi ...

  9. [转帖]Pivotal Greenplum 6.0 新特性介绍

    Pivotal Greenplum 6.0 新特性介绍 https://cloud.tencent.com/developer/news/391063 原来 greenplum 也是基于pg研发的. ...

随机推荐

  1. ABP框架系列之二十五:(Embedded-Resource-Files-嵌入式资源文件)

    Introduction ASP.NET Boilerplate provides an easy way of using embedded Razor views (.cshtml files) ...

  2. SSM_CRUD新手练习(9)显示分页数据

    我们已经做好了用来显示数据的分页模板,现在只需要将我们从后台取出的数据填充好,显示出来. 我们使用<c:forEach>标签循环取出数据,所以需要先导入JSTL标签库 <%@ tag ...

  3. scala字符串前加s使用$

    https://my.oschina.net/u/2000675/blog/1592140 字符串中的变量替换,Scala中基础的字符串插值就是在字符串前加字幕‘s’,然后在字符串中放入变量,每个变量 ...

  4. 【原创】【Android】揭秘 ART 细节 ---- Garbage collection

      背景 Dalvik :http://zh.wikipedia.org/wiki/Dalvik%E8%99%9A%E6%8B%9F%E6%9C%BA ART :http://source.andro ...

  5. KeepAlived+Nginx 安装

    yum install -y gcc gcc-c++ openssl openssl-devel 目前keepalived最新版本下载:[root@rhel ~]#wget -c http://www ...

  6. 微信小游戏 three.js jsonloader request:fail invalid url

    微信小游戏中,用 THREE.JSONLoader 直接加载本地的 json 文件,报错.估计是跨域访问的问题 解决:把 json 文件放到服务器上,通过 url 来访问. 临时测试的话,在本地起一个 ...

  7. Akka-Cluster(1)- Cluster Singleton 单例节点

    关于cluster-singleton我在前面的博文已经介绍过,在这篇我想回顾一下它的作用和使用方法.首先,cluster-singleton就是集群某个节点上的一个actor.任何时间在集群内保证只 ...

  8. javascript Location对象属性和方法

    Location对象 Location对象包含有关当前URL的信息 https://blog.csdn.net/u010953692/article/details/80901035#3 https( ...

  9. Maven - 实例-5-依赖冲突

    避免依赖冲突的原则 如果项目中的pom.xml没有指定依赖的信息,而是通过继承来引用依赖,则很有可能发生继承同一个依赖的多个版本,从而产生依赖冲突. Maven通过如下两个原则来避免依赖冲突: 1- ...

  10. [疑难杂症]__点击win10屏幕最上方的边界会莫名其妙打开Internet Explorer浏览器,不胜其烦(2次ps:已解决!!!).

    关于问题描述: 每次误点到屏幕上边界会莫名打卡Internet Explorer浏览器(一开始开以为是自带的Edge浏览器,后来在查找相关解决方法的时候才发现并不是同一款浏览器) 这个问题存在好久了, ...