C#6于2015年7月发布,并且集成到 .NET Framework 4.6和Visual Studio2015中,它的大部分特性都是语法糖,以下列出部分主要特性
1.自动属性优化
针对熟悉的get、set对于不变性(即在创建之后就不可以改变它的值)实现的优化
过去的方式
如果我们想创建一个具有不变性的字段,通过如下方式完成:
class Program
{
static void Main(string[] args)
{
var a = new ImmutableClass(100);
// 只读的值不能修改
// a.a = 5;
Console.ReadKey();
}
}
class ImmutableClass
{
private readonly int _a;
public int a {
get {
return _a; } private set; }
public ImmutableClass(int a)
{
_a = a;
}
}
如果需要某个属性是只读的,则需要指定setter为私有的。此时我们在外部将无法改变a的值(只能在创建时指定),但其实这是一种有问题的不变性
有问题的不变性
我们可以通过复写一些方法在内部改变成员变量的值
class Program
{
static void Main(string[] args)
{
var a = new ImmutableClass(100);
a.ToString();
Console.WriteLine(a.a); // 99
Console.ReadKey();
}
}
class ImmutableClass
{
private readonly int _a;
public int a {
get {
return _a; } private set; }
public ImmutableClass(int a)
{
_a = a;
}
public override string ToString()
{