=>在属性声明(不是lambda表达式)中意味着什么?

时间:2019-04-21 01:43:17

标签: c#

public override double TotalSpecialPower => 1000;

=>运算符是什么意思?

我知道=>是lambda表达式,但是我不知道它在public override double TotalSpecialPower => 1000;中的含义。

还有谁能向我解释getset以及它们如何在以下代码中工作?

private int _health = 100;
public int Health
{
    get => _health;
    set { _health = value; CaluateHeath(); }
}

2 个答案:

答案 0 :(得分:3)

如前所述,

=>用于lambda函数。它也用于表达健全的成员。

有关表达式健全成员的文档,请参见:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members

  • 2015年的C#6.0添加了对表达式绑定方法的支持。
  • C#7.0(2016年)增加了对表达式主体属性和其他成员的支持。

  • 在方法和属性get块中,它等效于{ return X; }

  • 在属性中:
    • 如果该属性具有单个表达式主体,则等效于声明仅具有吸气剂的get { return X; }属性。
    • 如果属性具有显式get,则等效于``

所以这个:

public int Health
{
    get => _health;
    set {  _health = value; CaluateHeath(); }
}

等效于:

public int Health
{
    get { return _health };
    set {  _health = value; CaluateHeath(); }
}

这:

public override double TotalSpecialPower => 1000;

等效于:

public override double TotalSpecialPower
{
    get { return 1000; }
}

这(注意括号):

public override double TotalSpecialPower() => 1000;

等效于:

public override double TotalSpecialPower()
{
    return 1000;
}

答案 1 :(得分:1)

这与表情实体有关。属性只是语法糖,使方法调用看起来像普通的字段分配和获取。

一个普通的属性有一个get和set,并带有卷曲的代码块。对于一个班轮来说,这可能是很多语法。因此,我是C#语言的最新版本,您可以像使用lambda一样使用Expression Bodies(胖箭头)来获取和使用setter。

我希望能有所帮助。

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members