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 #
| Versi | Fitur utama | Dibahas di |
|---|---|---|
| C# 8 | Nullable reference types, switch expression, default interface members, ranges dan indices | Nullable Reference Types, Control Flow, Inheritance dan Polymorphism, Array dan String |
| C# 9 | Record class, init-only setter, top-level statements, target-typed new, function pointers, covariant return | Struct, Record, dan Enum; Properties; Dasar Pemrograman; bab-bab section ini |
| C# 10 | Record struct, global usings, file-scoped namespace, peningkatan lambda, const interpolated string | Struct, Record, dan Enum; Persiapan Lingkungan; Lambda dan Expression |
| C# 11 | Raw string literals, required members, ref fields dan scoped ref, list patterns, generic math | Array dan String; Properties; Pattern Matching; Generics; bab-bab section ini |
| C# 12 | Primary constructors, collection expressions, alias any type, interceptors (experimental) | Bab-bab section ini |
| C# 13 | Params collections, lock object, partial properties, escape sequence \e, allows ref struct | Generics; Fungsi dan Method |
Mengatur LangVersion #
Versi bahasa dipilih lewat properti LangVersion di project file, bukan lewat versi .NET semata:
<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#.