我见过运营商=>在以下示例中使用:
public int Calculate(int x) => DoSomething(x);
或
public void DoSoething() => SomeOtherMethod();
除了lamba表达式之外,我从未见过这样的运算符,除此之外。
以下是做什么的?应该何时使用?
答案 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