Visual Studio 2017(15.x)支持C#7,但Visual Studio 2015(14.x)呢?
我怎样才能使用C#7?
在Visual Studio 2019 Advanced Build设置中,C#8似乎不适用于.NET Framework项目,而仅适用于.NET Core 3.0项目(如下图所示):
C#8是否支持.NET Framework?
我尝试通过模板创建一个 Windows Forms .NET core 3.1 应用程序并将输出类型切换到控制台应用程序。
这是我的代码:
static class Program
{
static void Main()
{
System.Console.WriteLine(0 switch { 0 => "Hello World" });
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我得到:
错误 CS8370:功能“递归模式”在 C# 7.3 中不可用。请使用 8.0 或更高版本的语言。
我的目标是 .NET Core 3.1。我认为默认情况下这会让我获得 C# 8.0 语言功能。显然我错了。
我该怎么办?
编辑: 我使用的是 Visual Studio 2019 16.3.9
这是最让我困惑的部分,因为它说语言版本是“根据框架版本自动选择的”(我无法更改它。)我也没有看到为什么我不能的充分解释更改语言版本为什么我不能选择不同的 C# 版本?该页面说如果我使用 .NET Core 3.x,我应该使用 C# 8.0。
.csproj 文件如下:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon />
<StartupObject>Program</StartupObject>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
添加此行可解决问题:
<LangVersion>8.0</LangVersion>
Run Code Online (Sandbox Code Playgroud)
但这真的是创建应用程序的唯一方法吗?我必须手动编辑我的 .csproj?为什么我不能更改语言版本,为什么它不会根据我使用 .NET Core 3.1 自动选择 C# …
我正在使用一些 API 返回一个IEnumerator子实例我想对返回的每个对象执行一些功能
我通常使用
while(Enumerator.MoveNext())
{
DoSomething(Enumerator.current);
}
Run Code Online (Sandbox Code Playgroud)
我没有IEnumerable对象,我想DoSomething异步处理每个对象
我不想IEnumerable从IEnumerator性能问题中获益。
我还能做什么来循环异步 IEnumerator