Pesan error compiler yang menyebut “C# 12” pada project yang baru saja dibuat, tutorial lama dengan sintaks yang berbeda, dan pertanyaan “kode saya jalan di .NET 8 atau tidak?” — semuanya bermuara pada satu topik: sistem versi. Tanpa memahami bagaimana versi C#, versi .NET, dan versi SDK saling terkait, kita mudah tersesat ketika mengikuti materi dari sumber yang berbeda tahunnya. Chapter ini memberi peta yang cukup untuk praktik sehari-hari.

Tiga Nomor Versi yang Perlu Dibedakan #

Dalam satu project .NET, ada tiga nomor versi yang berjalan bersama:

Nomor versiMenentukanContoh
Versi C#Sintaks bahasa yang boleh dipakai: records, primary constructors, dan lainnyaC# 13
Versi .NETRuntime dan Base Class Library yang menjalankan program.NET 9
Versi SDKPerangkat build yang terpasang di komputer, termasuk compilerSDK 9.0.319

Ketiganya terikat erat: setiap rilis .NET membawa satu versi C# baru. Compiler yang terpasang pada SDK menentukan versi C# tertinggi yang bisa kita gunakan, dan TargetFramework pada project menentukan versi .NET yang menyediakan pustakanya.

Peta Versi C# Saat Ini #

Sejak ritme rilis tahunan dimulai pada 2017, pemetaan antara .NET dan C# berjalan satu banding satu:

Rilis .NETVersi C#Fitur utama yang dibawa
.NET 5C# 9records, top-level statements
.NET 6C# 10global usings, file-scoped namespaces
.NET 7C# 11raw string literals, required members
.NET 8C# 12primary constructors, collection expressions
.NET 9C# 13Versi stabil saat ini, rilis November 2024

Sementara itu, .NET Framework yang berstatus legacy berhenti pada dukungan C# 7.3 — jauh di bawah fitur modern yang kita bahas pada Chapter Sejarah dan Evolusi C#. .NET 10 dengan C# 14 saat ini berada dalam tahap pengembangan dan akan mengikuti pola pemetaan yang sama.

Memeriksa Versi di Komputer Kita #

Perintah CLI berikut menampilkan seluruh SDK yang terpasang:

bash
dotnet --list-sdks

Output yang Dihasilkan:

text
9.0.319 [/home/z/.dotnet/sdk]

Angka 9.0.319 menunjukkan SDK untuk .NET 9, yang membawa compiler C# 13. Sementara itu, versi .NET yang menjadi target sebuah project dideklarasikan di file .csproj:

xml
<PropertyGroup>
  <TargetFramework>net9.0</TargetFramework>
</PropertyGroup>

Nilai net9.0 berarti project dikompilasi untuk berjalan di atas runtime .NET 9, dan secara default memakai C# 13.

Prinsip Kompatibilitas dalam Praktik #

Tiga aturan berikut cukup untuk menghindari masalah versi:

  • Kode lama dikompilasi oleh compiler baru. Menjalankan project C# lama pada SDK modern tidak menjadi masalah; compiler hanya menawarkan fitur baru, bukan mengubah kode yang sudah ada.
  • Sintaks baru gagal di SDK lama. Contoh kode yang memakai collection expressions (C# 12) tidak bisa dikompilasi oleh compiler C# 10; compiler melaporkan error pada sintaks tersebut.
  • Samakan versi di seluruh tim. Project yang dikerjakan bersama perlu menyepakati TargetFramework yang sama, biasanya dikunci melalui file konfigurasi project, agar build di komputer siapa pun menghasilkan keluaran yang sama.

Dengan peta versi dan prinsip kompatibilitas ini, section Pengenalan C# tuntas. Langkah berikutnya kita masuk ke section Persiapan Lingkungan: mengunduh SDK, memasang editor, dan menulis program pertama secara langsung.