为什么" =>"在这种情况下,工作分配但不是" ="?

时间:2017-01-25 22:55:27

标签: c# .net assignment-operator

我在我的工作中继承了一个C#MVC网络应用程序,并且在控制器类中直接有一个分配,如下所示:

public class FooController : Controller
{
    private IAuthenticationManager AuthenticationManager => HttpContext.GetOwinContext().Authentication;
}

Visual Studio突出显示错误,类似&#34 ;;预期&#34 ;.但它编译并运行得很好。如果我改变" =>"对于一个简单的赋值" =",它突出显示带有错误的HttpContext"非静态字段bla bla bla需要一个对象引用..."它不会编译。

所以这是我的问题。为什么使用" =>"运算符编译和正常工作?我是C#的新手(来自Android / iOS开发),所以尽管理解某些东西很容易,但这样的事情让我感到困惑。

1 个答案:

答案 0 :(得分:12)

=>不是作业。它是C#6中添加的一种捷径,语法糖,被称为"表达身体的功能成员"。

它与:

相同
private IAuthenticationManager AuthenticationManager
{
    get { return HttpContext.GetOwinContext().Authentication; }
}

编辑:添加BradleyDotNET的评论以澄清答案:

  

更具体地说;它适用于赋值,因为它在属性getter中返回一个方法调用,而不是在初始化时尝试将方法返回值赋给类成员(这是不允许的)

有关详细信息,请参阅this MSDN article