coreldraw/187368.html">color: #ff0000">为什么写?
今天去上班的公交上,有朋友在张队(张善友)的微信群里,发了一个介绍C# 6.0新特性的视频,视频7分钟,加上本人英语实在太low,整体看下来是一脸懵逼的。
下班回到家里,打开这个视频,把视频中介绍的新特性用文档的形式记录下来,加深自己的印象,此处把我整理的文档分享出来,希望对大家能有所帮助!
C#6.0已经发布快三年了,可能我们没有有太去关心新版本所加入的特性,有人说,发布新版本,无非就是添加一些“语法糖”罢了,不管是糖不是糖,既然加入了新功能,那么自然有新功能的好处,我们一起来看看,这块糖甜不甜。
在C# 6.0中并没有加入什么需要费大力思考才能用上的新概念,相反,而是提供了一些小而实用的新功能,可以帮助我们清理代码、提供样板,让我们的目的更加清晰。
1.Getter 专属自动特性
之前自动属性必须具有set ,这将对不可变变量不利,因此C# 6.0中允许了只有get的自动属性,编译器将识别这种属性为只读属性,即使没有set是我们还是可以从构造函数中给属性赋值,这个赋值过程时没有set也是可以实现的,它是直接分配到支持的字段,以便对其进行初始化。如下代码所示。
using System;
namespace TheNewCSharp6._0
{
//Getter专属自动新特性
public class Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public double Dist()
{
return Math.Sqrt(X * X + Y * Y);
}
}
}
2.使用静态成员
C# 6.0中引入一种新的using子句,它是引用类型,而非命名空间,这样可以把该类型的静态成员直接放入作用域中,例如在上一个例子中我们要使用Sqrt函数,我们必须添加math前缀,才能调用Sqrt(平方根)方法,
当我们加上
using static System.Math;
就可以无需加math前缀就可以直接使用Sqrt方法,代码如下:
using static System.Math;
namespace TheNewCSharp6._0
{
//使用静态成员
public class Point1
{
public int X { get; }
public int Y { get; }
public Point1(int x, int y)
{
X = x;
Y = y;
}
public double Dist()
{
return Sqrt(X * X + Y * Y);
}
}
}
我们一直认为星期一绝对是一周中的某一天,而黄色也是颜色中的一种。如果在代码中每次都要说明方法的归宿,这其实并无太大意义,而这一新特性恰好克服了这一困难。
3.字符串插值
String.Format是非常有用且功能强大的API,但是它很庞大,并且占位符、数字相关问题会让人感觉混淆不清,容易出错,扰乱我们的意图。如果要设置格式的值出现在适当的位置会更好,这就是此字符串内插语法的用途:










