一、 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