lambda表达式的编译器错误
本文关键字:错误 编译器 表达式 lambda | 更新日期: 2023-09-27 18:04:37
public ICommand ChangeLangCommand => new DelegateCommand(this.ChangeLangClick);
我得到这个编译器错误,标记在=>
箭头上:
Error 1 ; expected
我是否使用了错误的编译器版本?我怎么检查这个?
这是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);