【发布时间】:2020-06-18 21:59:12
【问题描述】:
有两个项目,一个是面向 .NET Standard 2.0 的库,另一个是面向 .NET Core 2.2 的控制台应用程序。
现在这段代码适用于 .NET Standard 2.0 库,但不适用于 .NET Core 2.2。
for (int i = 0; i < 1; i++) {
var y = new int[1].First(i => i == 0); // Conflict i name error here in .NET Core 2.2.
Console.WriteLine("Hello " + y);
}
我理解from this question 简单的名称不应该有不同的含义,因此,即使是 .NET Standard 2.0 库也应该给出错误,但事实并非如此。为什么会出现这种不一致?
我尝试过 dotnet fiddle,它似乎适用于 .NET Core 3.1 和 Roslyn 3.4,但不适用于 .NET Framework 4.7.2,这更令人困惑。这是怎么回事?
.Net Core 3.1(通过)https://dotnetfiddle.net/Cc1hmk
Roslyn 3.4(通过)https://dotnetfiddle.net/megBiw
.NET Framework 4.7.2(编译错误)https://dotnetfiddle.net/6PPqDs
【问题讨论】:
-
您能否再次检查它是否与 netstandard2.0 一起使用?我无法重现——我可以让它与 netstandard2.1 一起工作,但那不一样。
-
是的,你是对的。它在 .NET Standard 2.0 项目上工作的原因是因为我们有
<langversion>latest</langversion>。
标签: c# compiler-errors