lambda表达式的编译器错误

本文关键字:错误 编译器 表达式 lambda | 更新日期: 2023-09-27 18:04:37

public ICommand ChangeLangCommand => new DelegateCommand(this.ChangeLangClick);

我得到这个编译器错误,标记在=>箭头上:

Error   1   ; expected

我是否使用了错误的编译器版本?我怎么检查这个?

lambda表达式的编译器错误

这是c# 6.0的一个特性,叫做表达式体属性

public ICommand ChangeLangCommand => new DelegateCommand(this.ChangeLangClick);

你可以升级你的编译器(安装最新版本的VS2015)或不使用它,因为它等于getter-only属性:

public ICommand ChangeLangCommand
{
    get
    {
        return new DelegateCommand(this.ChangeLangClick);
    }
}

我感觉,每次访问属性时创建命令的新实例是错误的,正确的代码可能是

public ICommand ChangeLangCommand { get; }
// in constructor
ChangeLangCommand = new DelegateCommand(this.ChangeLangClick);

我认为这也是一个新特性(从构造函数初始化getter-only属性),如果这是真的,那么你可以使用旧的语法:

ICommand _changeLangCommand;
public ICommand ChangeLangCommand
{
    get
    {
        return _changeLangCommand;
    }
}
// in constructor
_changeLangCommand = new DelegateCommand(this.ChangeLangClick);