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

ZCo*_*der 1 c#

public override double TotalSpecialPower => 1000;
Run Code Online (Sandbox Code Playgroud)

什么是=>运营商意味着什么?

我知道这=>是一个 lambda 表达式,但我不知道它在public override double TotalSpecialPower => 1000;.

而且任何人都可以向我解释的get,并set与他们在下面的代码是如何工作的?

private int _health = 100;
public int Health
{
    get => _health;
    set { _health = value; CaluateHeath(); }
}
Run Code Online (Sandbox Code Playgroud)

Dai*_*Dai 6

=>用于您提到的 lambda 函数。它也用于表达体成员。

有关表达式主体成员的文档可在此处获得:https : //docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members

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

  • 在方法和属性get块中,它相当于{ return X; }.

  • 在属性中:
    • 如果该属性只有一个表达式主体,则它相当于声明了一个 getter-onlyget { return X; }属性。
    • 如果属性有一个明确的get,那么它相当于 ``

所以这:

public int Health
{
    get => _health;
    set {  _health = value; CaluateHeath(); }
}
Run Code Online (Sandbox Code Playgroud)

相当于:

public int Health
{
    get { return _health };
    set {  _health = value; CaluateHeath(); }
}
Run Code Online (Sandbox Code Playgroud)

和这个:

public override double TotalSpecialPower => 1000;
Run Code Online (Sandbox Code Playgroud)

相当于:

public override double TotalSpecialPower
{
    get { return 1000; }
}
Run Code Online (Sandbox Code Playgroud)

这(注意括号):

public override double TotalSpecialPower() => 1000;
Run Code Online (Sandbox Code Playgroud)

相当于:

public override double TotalSpecialPower()
{
    return 1000;
}
Run Code Online (Sandbox Code Playgroud)