我在我的工作中继承了一个C#MVC网络应用程序,并且在控制器类中直接有一个分配,如下所示:
public class FooController : Controller
{
private IAuthenticationManager AuthenticationManager => HttpContext.GetOwinContext().Authentication;
}
Visual Studio突出显示错误,类似&#34 ;;预期&#34 ;.但它编译并运行得很好。如果我改变" =>"对于一个简单的赋值" =",它突出显示带有错误的HttpContext"非静态字段bla bla bla需要一个对象引用..."它不会编译。
所以这是我的问题。为什么使用" =>"运算符编译和正常工作?我是C#的新手(来自Android / iOS开发),所以尽管理解某些东西很容易,但这样的事情让我感到困惑。
答案 0 :(得分:12)
=>
不是作业。它是C#6中添加的一种捷径,语法糖,被称为"表达身体的功能成员"。
它与:
相同private IAuthenticationManager AuthenticationManager
{
get { return HttpContext.GetOwinContext().Authentication; }
}
编辑:添加BradleyDotNET的评论以澄清答案:
更具体地说;它适用于赋值,因为它在属性getter中返回一个方法调用,而不是在初始化时尝试将方法返回值赋给类成员(这是不允许的)
有关详细信息,请参阅this MSDN article。