什么=>从字段或方法指向的运算符意味着什么? C#

时间:2016-09-12 15:15:12

标签: c# function lambda

我见过运营商=>在以下示例中使用:

public int Calculate(int x) => DoSomething(x);

public void DoSoething() => SomeOtherMethod();

除了lamba表达式之外,我从未见过这样的运算符,除此之外。

以下是做什么的?应该何时使用?

4 个答案:

答案 0 :(得分:4)

这些是使用C#6引入的Expression Body语句。重点是使用类似lambda的语法来单行简单的属性和方法。以上陈述就这样扩大了;

public int Calculate(int x)
{
    return DoSomething(x);
}

public void DoSoething()
{
    SomeOtherMethod();
}

值得注意的是,属性还接受表达式主体以创建简单的只获取属性:

public int Random => 5;

相当于

public int Random
{
    get
    {
        return 5;
    }
}

答案 1 :(得分:2)

看看这个Microsoft Article。这是一个C# 6.0功能,其中属性没有语句体。您可以将它们用于get方法或单行表达式。例如:

public override string ToString() => string.Format("{0}, {1}", First, Second);

答案 2 :(得分:1)

这是C#6中的一种新的简写语法。

在您的第一个示例中,它定义了一个公共方法Calculate(int x),其实现在DoSomething(x)中定义。

等效定义是:

class SomeClass {

    public int Calculate(int x) { return DoSomething(x); }

    protected int DoSomething(int x) { ... }
}

答案 3 :(得分:1)

C#6.0中的一个新功能称为表达式主体。

使用返回值编写一行代码是简写。

例如

int GetNumber() => 1;

表达式body语句与:

相同
int GetNumber()
{
    return 1;
}

您可以阅读更多here