簡體   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