当前位置:  开发笔记 > 编程语言 > 正文

为什么"=>"赋值在这种情况下有效而不是"="?

如何解决《为什么"=>"赋值在这种情况下有效而不是"="?》经验,为你挑选了1个好方法。

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

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

Visual Studio突出显示错误,类似于"; expected".但它编译并运行得很好.如果我将"=>"更改为一个简单的赋值"=",它会突出显示HttpContext,并显示错误"非静态字段bla bla bla需要一个对象引用..."它将无法编译.

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



1> Amy..:

=>不是任务.这是C#6中添加的一种快捷方式,语法糖,被称为"表达式身体功能成员".

它与以下内容相同:

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

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

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

有关详细信息,请参阅此MSDN文章.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有