三十分钟快速掌握三十分钟快速掌握C# 6.0知识点知识点
一、只读自动属性(一、只读自动属性(Read-only auto-properties))
C# 6之前我们构建只读自动属性:
public string FirstName { get; private set; }
public string LastName { get; private set; }
原理解析:原理解析:就是编译器在生成set访问器时,它的修饰符是private,由上可知所谓的只读只是针对类外部,在类内部还是可以
随意修改属性值的。
C# 6中提供了真正的只读自动属性,写法如下:
public string FirstName { get; }
public string LastName { get; }
原理解析:原理解析:首先编译器会生成一个readonly的私有字段而get访问器就是返回该字段的值,由上可知该只读自动属性只能在构
造函数中为其赋值。
二、自动属性初始化器(二、自动属性初始化器(Auto-Property Initializers))
以前自动属性的赋值操作我们只能写在方法中,如构造函数:
public Student(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
但在C# 6中我们可以把赋值操作当作声明的一部份,如下所示:
public string FirstName { get; set; } = "Corleone";
public string LastName { get; set; } = "Mike";
备注:备注:其实C# 6和之前的版本都一样赋值操作最终都是在方法中完成,但后者明显更简洁直观,所以这是个不错的语法糖。
三、函数成员的表达式体(三、函数成员的表达式体(Expression-bodied function members))
C# 6中提供的一个新语法:对于只有一条语句的方法体可以简写成表达式。如下面两种情况:
1. 方法(方法(Methods))
public Student Create() => new Student();
等同于:
public Student Create()
{
return new Student();
}
2. 只读属性(只读属性(read only properties))
public string FullName => string.Format("{0},{1}", FirstName, LastName);
等同于:
public string FullName
{
get
{
return string.Format("{0},{1}", FirstName, LastName);
}
}