最新 C# 編譯器會根據您專案的目標 Framework 判斷預設語言版本。 Visual Studio 不提供使用者介面以變更值,但您可編輯 csproj 檔案進行變更。 預設選項可確保您使用與目標框架相容的最新語言版本。 您可存取與專案目標相容的最新語言功能,而獲得相關效益。 這個預設選項也確保你不會使用需要目標框架中無法提供型別或執行時行為的語言版本。 選擇比預設更新的語言版本可能導致難以診斷的編譯時及執行時錯誤。
C# 語言參考資料記錄了 C# 語言最新版本。 同時也包含即將推出語言版本公開預覽功能的初步文件。
文件中標示了語言最近三個版本或目前公開預覽版中首次引入的任何功能。
小提示
欲查詢某功能何時首次在 C# 中引入,請參閱 C# 語言版本歷史的條目。
C# 14 僅支援 .NET 10 及更新版本。 C# 13 僅在 .NET 9 和更新版本上受支援。 C# 12 僅支援 .NET 8 以上版本。 不支援使用比目標 TFM 相關聯的版本還新的 C# 語言版本。
關於 Visual Studio 版本支援哪些 .NET 版本的詳細資訊,請參閱 Visual Studio 平台相容 性頁面。
Defaults
編譯器會根據下列規則決定預設值:
| Target | 版本 | C# 語言版本預設值 |
|---|---|---|
| .NET | 10.x | C# 14 |
| .NET | 9.x | C# 13 |
| .NET | 8.x | C# 12 |
| .NET | 7.x | C# 11 |
| .NET | 6.x | C# 10 |
| .NET | 5.x | C# 9.0 |
| .NET 核心 | 3.x | C# 8.0 |
| .NET 核心 | 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 | 全部 | C# 7.3 |
如果您的專案是以具有對應預覽語言版本為目標的 preview 架構時,所使用的語言版本將會是預覽語言版本。 您可在任何環境中使用該預覽的最新功能,而不會影響目標為已發行 .NET Core 版本的專案。
C# 語言版本參考
下表顯示所有目前的 C# 語言版本。 較舊的編譯器可能無法了解每個值。 若安裝最新的 .NET SDK,則可存取列出的所有項目。
| 值 | 意義 |
|---|---|
preview |
編譯器會接受最新預覽版本的所有有效語言語法。 |
latest |
編譯器會接受編譯器最新已發行版本 (包括次要版本) 的語法。 |
latestMajor或 default |
編譯器會接受編譯器最新已發行主要版本的語法。 |
14.0 |
編譯程式只接受 C# 14 或更低版本中包含的語法。 |
13.0 |
編譯器只接受 C# 13 或更低版本中所含的語法。 |
12.0 |
編譯器只接受 C# 12 或更低版本中所含的語法。 |
11.0 |
編譯器只接受 C# 11 或更低版本中所含的語法。 |
10.0 |
編譯器只接受 C# 10 或更低版本中所含的語法。 |
9.0 |
編譯器只接受 C# 9 或更低版本中所含的語法。 |
8.0 |
編譯器只會接受 C# 8.0 或更低版本中所含的語法。 |
7.3 |
編譯器只會接受 C# 7.3 或更低版本中所含的語法。 |
7.2 |
編譯器只會接受 C# 7.2 或更低版本中所含的語法。 |
7.1 |
編譯器只會接受 C# 7.1 或更低版本中所含的語法。 |
7 |
編譯器只會接受 C# 7.0 或更低版本中所含的語法。 |
6 |
編譯器只會接受 C# 6.0 或更低版本中所含的語法。 |
5 |
編譯器只會接受 C# 5.0 或更低版本中所含的語法。 |
4 |
編譯器只會接受 C# 4.0 或更低版本中所含的語法。 |
3 |
編譯器只會接受 C# 3.0 或更低版本中所含的語法。 |
ISO-2或 2 |
編譯器只接受 ISO/IEC 23270:2006 C# (2.0) 中所含的語法。 |
ISO-1或 1 |
編譯器只接受 ISO/IEC 23270:2003 C# (1.0/1.2) 中所含的語法。 |
注意
使用 值指定default 與省略 LangVersion 選項不同。 指定 default 會使用編譯器支援的最新語言版本,而不考慮目標 Framework。 例如,如果未指定 LangVersion,則從目前 Visual Studio 2022 版本建置以 .NET 6 為目標的專案會使用 C# 10,但如果 LangVersion 設定為 default,則會使用 C# 12。