我有一个使用 .Net 4.0的项目。(目标框架是.Net 4)。
我使用Visual Studio 2017编译源代码,并使用以下代码:
if(int.TryParse(inputText, out int x))
StartAnotherMethod(x);
它在我的计算机上成功编译,所以我将它提交到存储库并等待构建服务器也进行编译。
令人惊讶的是,它有编译错误。
错误CS1525:无效的表达式术语' int'
错误CS1003:语法错误,','预期
我在在线编译器中检查过它。它使用.Net 4.5,也显示编译错误。
https://dotnetfiddle.net/pibxC2
编译错误(第9行,第32行):无效的表达式术语' int'
编译错误(第9行,第33栏):;预期
编译错误(第9行,第33行):无效的表达式术语')'
编译错误(第9行,第34行):;预期
编译错误(第9行,第34行):无效的表达式术语')'
编译错误(第9行,第35栏):;预期
正如我所读到的,语言功能并不需要新的框架,所以它应该没有任何问题进行编译。
我错过了什么?
答案 0 :(得分:12)
您没有为C#7使用编译器。将编译器更改为Roslyn。
这里的关键是可用的语言功能由编译器决定,而不是目标框架。
答案 1 :(得分:0)
试试这个
const pipe = (f, ...fs) => x =>
f === undefined ? x : pipe(...fs)(f(x))
const foo = pipe(
x => x + 1,
x => `hey look ${x * 2} a string!`,
x => x.substr(0, x.length) + Array(5).join(x.substring(x.length - 1)),
console.log
)
foo(3) // hey look 8 a string!!!!!
答案 2 :(得分:0)
这是构建服务器上的编译问题。 我通过将一个语句分为两个来解决它,如下所示。
int.TryParse(input,out int value);
解决方案: int value = 0; int.TryParse(输入,输出值);
或者如果允许,可以在构建服务器上更改编译器。