我有一个最初在VS 2017中创建的Xamarin Forms项目,然后我们发现我们需要针对Windows 8,所以我正在努力让项目在VS 2015中启动并运行。
我最初尝试在2015年打开2017年的项目,看起来还不错,但是在构建时,我在使用lambda语法(=>
)的每一行都遇到了错误,无论是在访问器内还是在常规函数内引用。错误是花园式语法错误;编译器似乎根本不识别运算符。例如,get => _privateVal;
会导致错误CS1043 { or ; expected
。
我认为2015年开设2017年项目是一个问题,所以我在2015年从零开始创建了一个新项目,但我遇到了同样的问题。
我没有很多.NET经验,但lambdas已经存在了很长时间,所以我不知道为什么两年前版本的Visual Studio会出现这样的问题。我猜它可能是一个构建目标问题(类似于Visual Studio 2008 doesn't recognize Lambda Expression Syntax),但如果是这样的话,我真的不知道如何纠正它。
总之,任何人都可以解释为什么C#不能识别lambda语法,并想知道如何修复它?
答案 0 :(得分:6)
Expression-bodied setters是a C# 7 language feature。在大多数情况下,您需要使用Visual Studio 2017来使用这些语言功能,除非您想要swap the 2015 compiler。