=>操作符指向字段或方法的意思?c#

本文关键字:方法 意思 字段 操作符 | 更新日期: 2023-09-27 18:06:44

我在下面的例子中看到过操作符=>的使用:

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

public void DoSoething() => SomeOtherMethod();

我从来没有见过这样使用这个运算符,除了在lambda表达式中。

下面的代码是做什么的?何时何地使用?

=>操作符指向字段或方法的意思?c#

这些是c# 6引入的表达式体语句。关键是使用类似lambda的语法来实现单行简单的属性和方法。以上语句展开如下:

public int Calculate(int x)
{
    return DoSomething(x);
}
public void DoSoething()
{
    SomeOtherMethod();
}
值得注意的是,属性也接受表达式体,以便创建简单的get-only属性:
public int Random => 5;

等价于

public int Random
{
    get
    {
        return 5;
    }
}

看看这篇微软文章。这是一个C# 6.0特性,其中属性没有语句体。您可以将它们用于get方法或单行表达式。例如:

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

c# 6.0中的一个新特性叫做表达式体。

用返回值编写单行代码是一种速记。

例如

int GetNumber() => 1;

是一个表达式体语句,与

相同:
int GetNumber()
{
    return 1;
}

你可以在这里阅读更多

这是c# 6中新的速记语法。

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

等价的定义是:

class SomeClass {
    public int Calculate(int x) { return DoSomething(x); }
    protected int DoSomething(int x) { ... }
}