Penerapan versi bahasa pemrogram C#
kompilator C# terbaru menentukan versi bahasa pemrogram default berdasarkan kerangka kerja target atau kerangka kerja proyek Anda. Visual Studio tidak menyediakan UI (antarmuka pengguna) untuk mengubah nilai, tetapi Anda dapat mengubahnya dengan mengedit file csproj. Pilihan default memastikan bahwa Anda menggunakan versi bahasa pemrogram terbaru yang kompatibel dengan kerangka kerja target Anda. Anda mendapat manfaat dari akses ke fitur bahasa pemrogram terbaru yang kompatibel dengan target proyek Anda. Pilihan default ini juga memastikan Anda tidak menggunakan bahasa pemrogram yang memerlukan jenis atau perilaku runtime bahasa umum yang tidak tersedia dalam kerangka kerja target Anda. Memilih versi bahasa pemrogram yang lebih baru dari default dapat menyebabkan kesulitan dalam mendiagnosis kesalahan waktu kompilasi dan runtime bahasa umum.
C# 11 hanya didukung pada .NET 7 dan versi yang lebih baru. C# 10 hanya didukung pada .NET 6 dan versi yang lebih baru. C# 9 hanya didukung pada .NET 5 dan versi yang lebih baru. C# 8.0 hanya didukung pada .NET Core 3.x dan versi yang lebih baru.
Periksa halaman kompatibilitas platform Visual Studio untuk detail tentang versi .NET mana yang didukung oleh versi Visual Studio. Periksa halaman kompatibilitas platform Visual Studio untuk Mac untuk detail tentang versi .NET mana yang didukung oleh versi Visual Studio untuk Mac. Periksa halaman Mono untuk C# untuk kompatibilitas Mono dengan versi C#.
Default
Kompilator menentukan default berdasarkan berbagai aturan ini:
| Kerangka kerja target | versi | Default versi bahasa pemrogram C# |
|---|---|---|
| .NET | 7.x | C# 11 |
| .NET | 6.x | C# 10 |
| .NET | 5.x | C# 9.0 |
| .NET Core | 3.x | C# 8.0 |
| .NET Core | 2.x | C# 7.3 |
| .NET Standar | 2.1 | C# 8.0 |
| .NET Standar | 2.0 | C# 7.3 |
| .NET Standar | 1.x | C# 7.3 |
| .NET Framework | semua | C# 7.3 |
Saat proyek Anda menargetkan kerangka kerja pratinjau yang memiliki versi bahasa pemrogram pratinjau yang sesuai, versi bahasa pemrogram yang digunakan adalah versi bahasa pemrogram pratinjau. Anda menggunakan fitur terbaru dengan pratinjau tersebut di lingkungan apa pun, tanpa memengaruhi proyek yang menargetkan versi .NET Core yang dirilis.
Penting
Templat proyek baru untuk Visual Studio 2017 menambahkan entri <LangVersion>latest</LangVersion> ke file proyek baru. Jika Anda meningkatkan kerangka kerja target untuk proyek-proyek ini, berbagai entri ini akan mengambil alih perilaku default. Anda harus menghapus <LangVersion>latest</LangVersion> dari file proyek Anda saat memperbarui .NET SDK. Kemudian, proyek Anda akan menggunakan versi kompilator yang direkomendasikan untuk kerangka kerja target Anda. Anda dapat memperbarui kerangka kerja target untuk mengakses fitur bahasa pemrogram yang lebih baru.
Mengambil alih default
Jika Anda harus menentukan versi C# Anda secara eksplisit, Anda dapat melakukannya dengan beberapa cara:
- Edit file proyek Anda secara manual.
- Atur versi bahasa untuk beberapa proyek dalam subdirektori.
- Konfigurasikan opsi kompilator LangVersion.
Tip
Anda dapat melihat versi bahasa pemrogram di Visual Studio di halaman properti proyek. Di bawah tab Build, panel Tingkat Lanjut menampilkan versi yang dipilih.
Untuk mengetahui versi bahasa pemrogram apa yang saat ini Anda gunakan, masukkan #error version (peka huruf besar/kecil) dalam kode Anda. Ini membuat kompilator melaporkan kesalahan kompilator, CS8304, dengan pesan yang berisi versi kompilator yang sedang digunakan dan versi bahasa yang dipilih saat ini. Lihat #kesalahan (Referensi C#) untuk informasi selengkapnya.
Mengedit file proyek
Anda dapat mengatur versi bahasa pemrogram dalam file proyek Anda. Misalnya, jika Anda secara eksplisit menginginkan akses ke fitur pratinjau, tambahkan elemen seperti ini:
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
Nilai preview menggunakan versi bahasa pemrogram C# pratinjau terbaru yang tersedia dengan dukungan kompilator Anda.
Mengonfigurasi beberapa proyek
Untuk mengonfigurasi beberapa proyek, Anda dapat membuat file Directory.Build.props yang berisi elemen <LangVersion>. Anda biasanya melakukannya di direktori solusi Anda. Tambahkan yang berikut ini ke file Directory.Build.props di direktori solusi Anda:
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
Melakukan build di semua subdirektori dari direktori yang berisi file tersebut akan menggunakan versi pratinjau C#. Untuk informasi selengkapnya, lihat Kustomisasi build Anda.
Referensi versi bahasa pemrogram C#
Tabel berikut ini memperlihatkan semua versi bahasa pemrogram C# saat ini. Kompilator Anda mungkin belum tentu memahami setiap nilai jika lebih lama. Jika Anda memasang .NET SDK terbaru, maka Anda memiliki akses ke semua yang tercantum.
| Nilai | Makna |
|---|---|
preview |
Kompilator menerima semua sintaks bahasa yang valid dari versi pratinjau terbaru. |
latest |
Kompilator menerima sintaks dari versi kompilator terbaru yang dirilis (termasuk versi minor). |
latestMajor (default) |
Kompilator menerima sintaks dari versi utama kompilator terbaru yang dirilis. |
10.0 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 10 atau lebih rendah. |
9.0 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 9 atau lebih rendah. |
8.0 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 8.0 atau lebih rendah. |
7.3 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 7.3 atau lebih rendah. |
7.2 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 7.2 atau lebih rendah. |
7.1 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 7.1 atau lebih rendah. |
7 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 7.0 atau lebih rendah. |
6 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 6.0 atau lebih rendah. |
5 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 5.0 atau lebih rendah. |
4 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 4.0 atau lebih rendah. |
3 |
Kompilator hanya menerima sintaks yang disertakan dalam C# 3.0 atau lebih rendah. |
ISO-2 (atau 2) |
Kompilator hanya menerima sintaks yang disertakan dalam ISO/IEC 23270:2006 C# (2.0). |
ISO-1 (atau 1) |
Kompilator hanya menerima sintaks yang disertakan dalam ISO/IEC 23270:2003 C# (1.0/1.2). |