Seluruh bab di section ini menyebut versi C# tempat fiturnya lahir. Bab ini merangkum peta tersebut dalam satu tabel, sehingga setiap fitur dapat ditautkan ke bab pembahasannya saat membaca kode pustaka yang menargetkan versi berbeda-beda.

Tabel Fitur C# 8 sampai C# 13 #

VersiFitur utamaDibahas di
C# 8Nullable reference types, switch expression, default interface members, ranges dan indicesNullable Reference Types, Control Flow, Inheritance dan Polymorphism, Array dan String
C# 9Record class, init-only setter, top-level statements, target-typed new, function pointers, covariant returnStruct, Record, dan Enum; Properties; Dasar Pemrograman; bab-bab section ini
C# 10Record struct, global usings, file-scoped namespace, peningkatan lambda, const interpolated stringStruct, Record, dan Enum; Persiapan Lingkungan; Lambda dan Expression
C# 11Raw string literals, required members, ref fields dan scoped ref, list patterns, generic mathArray dan String; Properties; Pattern Matching; Generics; bab-bab section ini
C# 12Primary constructors, collection expressions, alias any type, interceptors (experimental)Bab-bab section ini
C# 13Params collections, lock object, partial properties, escape sequence \e, allows ref structGenerics; Fungsi dan Method

Mengatur LangVersion #

Versi bahasa dipilih lewat properti LangVersion di project file, bukan lewat versi .NET semata:

xml
<PropertyGroup>
  <LangVersion>13</LangVersion>
</PropertyGroup>

Target framework net9.0 menggunakan C# 13 secara bawaan, net8.0 menggunakan C# 12, dan nilai latest atau preview mengaktifkan rilis terbaru yang terpasang. Nilai bawaan inilah yang dipakai seluruh contoh di course ini.

Fitur Bahasa vs Fitur Runtime #

Tidak semua fitur menuntut runtime baru. Sintaks murni seperti primary constructors, collection expressions, dan target-typed new diubah compiler menjadi kode biasa, sehingga hasilnya tetap berjalan di runtime lama. Sebaliknya, fitur yang bersandar pada pustaka, seperti generic math dengan INumber<T> atau metadata required, menuntut versi .NET tertentu. Pembahasan mendalam tersedia pada bab versi C# dan kompatibilitas di section Pengenalan C#.