函数的表达式主体
如果一个函数的主体,仅有一条语句,且这条语句不是流程控制语句。
那么可以把函数主体的大括号,改为=>表示。
如果是有返回值的函数,那么这连return也可以省略。
int ReadInt()
{
return int.Parse(Console.ReadLine());
}
int ReadInt() =>
int.Parse(Console.ReadLine());
这同样可以适用于访问器。
class Monster
{
int hp;
int maxHp;
int atk;
public double HpRatio
{
get => 1.0 * hp / maxHp;
set => hp = (int)(maxHp * value);
}
}
然而,一般不建议对函数使用这种简写方式。因为难以判断这个函数的边界。
而属性自体有一对大括号,内部的访问器种类也有限,较为容易判断。
仅get访问器的简写
在编程规范中,只有set访问器而没有get访问器是不符合规范的。
这意味着,大多数情况下,一个属性总是会有get访问器。
如果一个属性只有get访问器,且这个get访问器是表达式主体,
那么可以更进一步简写,省略get和大括号。
class Monster
{
int hp;
int maxHp;
int atk;
public double HpRatio => 1.0 * hp / maxHp;
}