码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-12-25 08:49:39      阅读:402      评论:0      收藏: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在使用前必须定义,但定义了又没用,反正值要在方法里面改的,所以就可以直接合并起来用

 

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

标签:

原文地址:http://www.cnblogs.com/liuyouying/p/5074840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!