繁体   English   中英

在 Visual Studio 中,我的 Winforms 程序不支持接口。 我怎样才能让它支持他们?

[英]In Visual Studio, my Winforms program is not supporting interfaces. How can I make it support them?

我过去使用过 Visual Studio,例如 Visual Studio 2015 和之前的版本,但没有遇到这样的问题。

我有 Visual Studio 2019,并创建了一个 Winforms 程序并收到此错误

默认接口实现在 c# 7.3 中不可用。 请使用 8.0 或更高版本的语言

在此处输入图像描述

过去,我在 c# 5.0 或更早版本时使用 C#,例如 C# v3 或 ZD7EFA19,027D39D374Z5ADB4 和 IBE7D39D374Z5ADB4 从未遇到过。

我注意到 Visual Studio 2019 提供了两种类型的 Winforms 程序,.NET Framework 和 .NET Core

在此处输入图像描述

该错误发生在 .NET 框架中。

当我创建一个选择 .NET 核心的 Winforms 项目时,我没有收到该错误。 我真的不知道这两者之间有什么区别。 但是为什么使用 .NET 框架选择的 Winforms 程序不支持接口,但使用 .NET Core 会?

我发现一个网页说我需要安装 .net 核心 3,我安装了,但程序(基于 .NET 框架)仍然无法运行。

我不是要创建基于 .NET 框架的 Winforms 程序吗? 并且只有 .NET 核心?

当我有一个基于 .NET 框架的 Winforms 程序时,我应该如何让它工作?

I looked at downloading C# 8 I see this link https://devblogs.microsoft.com/dotnet/take-c-8-0-for-a-spin/ mentions .NET Core 3, though I think I already installed .NET Core 3 . 问题在于基于 .NET 框架的 Winforms 程序,而不是基于 .NET 核心的程序

您正在尝试声明以下接口:

interface abcd
{
    static int abcd;
}

您正在使用 .NET 框架,默认为 C# 7.3。 在 C# 7.3 中,接口不能包含 static 成员或字段,因此这是错误的两次。 在 C# 8.0 中添加默认接口实现之前,这将是一个不同的错误; 可能有人告诉您接口不能包含字段。 但是,在 C# 8.0 之后,可以将此类事情作为默认实现的一部分进行,因此现在错误假设您正在尝试这样做,并告诉您需要启用哪个版本的 C# 才能这样做.

如果您不尝试添加默认实现,则可以通过将该字段设置为属性来修复您的代码,并使该属性不是 static。

interface abcd
{
    int abcd { get; set; }
}

错误很明显,它只允许在 C# 8.0 或更高版本中使用。

并且C# 8.0支持.net核心

.net 框架不支持高于 C# 7.3 的版本。

参考: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version#defaults

来自 vivek、hans 和 anax 的信息帮助了..

所以在VS 2019中有两种创建winforms应用程序的方法,一种是.NET Core,一种是.NET Framework(正如我们在问题中看到的图像)

每个都与 C# 语言的不同版本相关联。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version

Target framework    version C#      language version  
.NET Core           3.x              C# 8.0
.NET Core           2.x              C# 7.3
.NET Standard       2.1              C# 8.0
.NET Standard       2.0              C# 7.3
.NET Standard       1.x              C# 7.3
.NET Framework      all              C# 7.3

.NET Framework是框架的旧名称/旧框架的名称, .NET Core是更新的。

因此,选择.NET Core创建它们可能会更好

如果创建一个 .NET Core one,那么使用的语言是 C# 8。

而使用 .NET 框架创建它时,使用的语言是 C# 7.3

两者都不允许接口中的实例变量,但与 .NET 核心一起使用的最新版本(c# 8)确实允许接口中的 static 变量。

在此处输入图像描述

在此处输入图像描述

VS 2015 使用旧的 .NET 框架。

在 VS 2015 中,我必须使用 getter 和 setter,例如

int abcd { get; set; }

当然,您仍然可以使用较新的 .NET Core one。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM