.NET/C# 各版本变化及衍生知识点 C# 6.0

一、 C# 6.0,对应.NET 4.6,对应VS 2015,新特性:主构造函数、using静态类、属性表达式、方法表达式、枚举参数、null判断、Constructor type parameter inference、内联out、自动属性增强、字符串嵌入值string.Format变成直接"{变量}"、nameof表达式、异常过滤器、catch和finally 中的 await 、无参数的结构体构造函数

1、字符串嵌入值

这个Resharper有自动提示,可以自动转换,但怕技术太新,不好移植,还是暂时没在项目中用

string a = string.Format("ab{0}d", "X");
Console.WriteLine(a);
string x = "X";
string b = $"ab{x}d";
Console.WriteLine(b);
Console.ReadKey();

在字符串前面加$,中间用{},里面可以放变量或字符串,简洁了很多。

2、主构造函数

public class Point {
    private int x, y;

    public Point(int x, int y)
        this.x = x;
        this.y = y;
    }
}

//等效
public class Point(int x, int y) {
    private int x, y;
}

3、自动属性赋值

   class Point
    {
        public int X { get; private set; }
        public int Y { get; private set; }

        public Point()
        {
            this.X = 100;
            this.Y = 100;
        }
    } 

   //等效
   class Point
    {
        public int X { get; private set; } = 100;
        public int Y { get; private set; } = 100;
    } 

4、引用静态类

以前要Math.Round(1.2),每次用到都要Math,现在可以先引用(using System.Math;),然后每次直接Round()就可以

5、属性表达式/方法表达式

public double Distance
{
    get {return 1;}
}
//等效
public double Distance1 => 1;
public DayOfWeek day(int i)
{
    return DayOfWeek.Friday;
}
//等效
public DayOfWeek day1(int i) => DayOfWeek.Friday;

6、null检查运算符

string a = null;
//string x=a.ToString(); //会报错
//Console.WriteLine(x);
string y=a?.ToString();
Console.WriteLine(y);
Console.ReadKey();

以前在调用方法前,时不时要判断是不是空,比如常见的ToString(),一般要用Convert.ToString(),不然容易报错,现在只要使用?.ToString()就可以了

7、内联out

int x;
int.TryParse("123", out x);
//等效
int.TryParse("123", out int x);

因为out在使用前必须定义,但定义了又没用,反正值要在方法里面改的,所以就可以直接合并起来用

时间: 2024-10-27 06:55:08

.NET/C# 各版本变化及衍生知识点 C# 6.0的相关文章

.NET/C# 各版本变化及衍生知识点 .NET 3.0/3.5

一.C# 3.0,对应.NET 3.0,对应VS 2008,新特性:类型推断.隐式类型的部变量.对象集合初始化.自动实现属性.匿名类型.扩展方法.查询表达式.Lambda表达式.表达式树.分部类和方法 1. 二.C# 3.0,对应.NET 3.5,对应VS 2008,新特性:支持AJAX和LINQ.ADO.NET Entity Framework.ADO.NET.var

.NET/C# 各版本变化及衍生知识点

还是新开一篇吧,因为不光要记录各版本变化,还想把相关知识点衍生出来扩展一下,一天写不完就多几天,这里面知识点非常多. C# 1.0,对应.NET 1.0,对应VS 2003,新特性:事件.委托. C# 2.0,对应.NET 2.0,对应VS 2005,新特性:泛型.匿名.迭代.可空.委托(协变/逆变).部份类.形态类.属性访问控制 C# 3.0,对应.NET 3.0,对应VS 2008,新特性:类型推断.隐式类型的部变量.对象集合初始化.自动实现属性.匿名类型.扩展方法.查询表达式.Lambda

babel版本变化 - 简单理解

babel版本变化 现在大部分使用babel的项目都是用的babel7.x了,但是还是需要去了解一下babel每个版本的一个重大变化,本篇主要是简单来记录下我了解的babel几个版本的重大变化 babel5.x 我看官网babel5已经没有了,,,但是在我了解的过程中,有好多博客都说有babel5,,,差不多就是说babel5就是一个全家桶,类似于vue-cli那样的东西,包括各种包和插件,babel5大概就是让你通过一次安装,尽可能的可以达到所有你想要的东西. babel6.x babel5升

HttpClient 版本变化 转载

转载地址:http://my.oschina.net/u/577453/blog/173724 最近用到了HttpClient写爬虫,可能我有新版本强迫症,老是喜欢用新版本的东西(虽说新版本不一定好用),然后就用了HttpClient 4.3.HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样, 3.X是这样的 HttpClient httpClient=new DefaultHttpClient

Oracle 最新版本变化 转帖

版本更迭 http://www.sohu.com/a/163264045_505827 Oracle Database的下一个版本将是 Oracle 18. 目的 为了更快的.通过每年的版本发布将新特性带给用户,小步快跑.灰度发布,可以尽量通过小的变更,降低用户对于版本升级的恐惧感. 由此又可以将用户更紧密的团结在Oracle数据库产品周围,通过持续不断的升级来保持用户和Oracle的互动. 在MOS上『文档号 742060.1』,这一计划已经更新. 在以下发布计划中可以看到,在2018年将发布

ReactJs 的各个版本生命周期、API变化 汇总(一、V16.0.0)

目录 一.React 各个版本之间的纵向对比 二.React 的基础 1.Components and Props 三.React V 16.0.0 1. The Component Lifecycle ( v16.0.0 ) 2. Other APIs 3. Class Properties (类的属性) 4.Instance Properties (实例属性) 3. 回顾 由于 React 的版本更新频繁,各类的新特性也是让人眼花缭乱的,为了方便自己查询最新的以及过往的 各个 React 版

Appium原理及版本变化细节

Appium原理小结 Api接口调用selenium的接口,Android底层用android的instrumentation(API2.3+ 通过绑定另外一个独立的selendroid项目来实现的).uiautomator接口(API4.2+),iOS底层用ios的uiautomation接口. Client/ServerArchitecture Appium server是用Node.js写的,安装node.js可以直接用npm命令或dmg,server端功能:监听一个端口,接收client

nginx各版本变化说明

from: http://nginx.org/en/CHANGES 使用nginx cache,想要配置cache数据自动清理时间,发现一个参数 clean_time ,但发现很早这个参数就从稳定版本中 清除了.目前来看,只能用purge指令控制. 以下是 nginx 各个版本的 changes 说明. Changes with nginx 1.7.7 28 Oct 2014 *) Change: now nginx takes into account the "Vary" head

Windows内核版本变化(Windows 10 Build 9888 内核版本是 10.0)

Windows Vista 内核版本是 6.0 Windows 7 内核版本是 6.1 Windows 8 内核版本是 6.2 Windows 8.1 内核版本是 6.3 Windows 10 Build 9841.9860 和 9879 内核版本是 6.4 Windows 10 Build 9888 内核版本是 10.0 通常内核版本的改变意味着较大的底层更新,Windows 10 内核将比 Windows 7 有更彻底的改变,内核版本也可能是在和 Windows 10 命名保持一致,突出和过