C# (dibaca "C sharp") adalah bahasa pemrograman serbaguna yang dirancang di Microsoft oleh tim yang dipimpin Anders Hejlsberg, dan pertama kali dirilis pada 2002. C# bertipe statis (setiap variabel punya tipe yang diperiksa compiler sebelum program berjalan), berorientasi objek (kode disusun dalam class), dan managed (garbage collector membebaskan memori untukmu). C# modern juga banyak meminjam dari pemrograman fungsional: lambda, query LINQ, pattern matching, dan record yang immutable.
Ini adalah program C# yang lengkap. Tekan Jalankan:
Output:
Hello, Ada! It is 2026.
Untuk apa C# dipakai
C# adalah bahasa serbaguna, jadi bisa ditemukan di hampir semua jenis software, tetapi sebagian besar pemakaiannya ada di beberapa bidang:
- Game. Unity, salah satu game engine yang paling banyak dipakai, memakai C# sebagai bahasa scripting. Godot juga mendukungnya.
- Backend web. ASP.NET Core adalah framework web .NET untuk API, situs web, dan aplikasi real-time. Framework ini termasuk framework web populer yang paling cepat dalam benchmark publik.
- Aplikasi desktop. WPF dan Windows Forms di Windows, .NET MAUI dan Avalonia untuk lintas platform.
- Cloud dan layanan. Azure Functions, background worker, microservice di dalam container.
- Tool dan otomatisasi. Tool command line, skrip build, pemrosesan data.
C# terutama umum di perusahaan besar yang berjalan di atas teknologi Microsoft dan di studio game. Aplikasi mobile bisa dibuat dengan .NET MAUI (penerus Xamarin), tetapi itu ceruk yang lebih kecil dibanding Kotlin atau Swift.
C# dan .NET bukan hal yang sama
C# adalah bahasanya. .NET adalah platform yang menjalankannya, dan terdiri dari tiga bagian:
- Runtime (CLR). Compiler C# tidak menghasilkan kode mesin. Compiler menghasilkan Intermediate Language (IL), yang disimpan di file
.dllatau.exe. Saat program berjalan, Common Language Runtime mengompilasi IL itu menjadi kode native tepat saat dibutuhkan (JIT), mengelola memori dengan garbage collector, dan menegakkan keamanan tipe. - Base class library. Collection, akses file, jaringan, teks, tanggal, threading: semua yang ada di bawah
System.*. - SDK. Perintah
dotnetyang membuat, mem-build, menguji, dan menjalankan proyek.
Bahasa lain juga dikompilasi ke IL yang sama (F#, Visual Basic), karena itulah program C# bisa memakai library yang ditulis dengan F#.
Platform ini punya dua generasi. .NET Framework (1.0 pada 2002 sampai 4.8.1) hanya untuk Windows dan masih menjalankan banyak aplikasi lama. .NET (disebut .NET Core sampai versi 5) adalah penerusnya yang open source dan lintas platform, berjalan di Windows, Linux, dan macOS. Pekerjaan baru menargetkan .NET; rilis bernomor genap seperti .NET 8 dan .NET 10 mendapat dukungan jangka panjang selama tiga tahun.
Bagaimana program C# disusun
Program C# terdiri dari tipe (class, struct, interface, enum, record) yang berisi member (field, property, method). Eksekusi dimulai di method static bernama Main. Namespace mengelompokkan tipe yang berhubungan, dan directive using memungkinkan kamu merujuknya dengan nama pendek.
Output:
Maya: 21.00
Leo: 13.00
Beberapa hal sudah terlihat di sini: Order adalah class dengan dua property (Customer, Total), sebuah constructor, dan sebuah method. decimal adalah tipe untuk uang, dan sufiks m menandai literal decimal. var membiarkan compiler menyimpulkan tipe variabel lokal, dan List<Order> adalah collection generic yang hanya menerima objek Order. {order.Total:F2} di dalam $"..." memformat angka dengan dua desimal.
Di proyek sungguhan, setiap class biasanya ada di file-nya sendiri, dan semua file dikompilasi bersama menjadi satu assembly. Lihat class dan objek untuk detailnya.
Tipe statis dalam praktik
Compiler mengetahui tipe setiap ekspresi, jadi banyak jenis kesalahan tidak pernah sampai ke program yang sedang berjalan. Mengisi int dengan string, memanggil method yang tidak ada, atau mengirim argumen dengan urutan yang salah akan gagal saat kompilasi dengan error yang menunjuk barisnya.
Output:
29.97
45
Tipe juga menggerakkan editor: autocomplete, rename, dan "find all references" bekerja dengan tepat di C# karena tool-nya membaca informasi tipe yang sama dengan yang dibaca compiler.
Versi C# dan apa yang ditambahkannya
Sejak C# 9 pada 2020, versi baru dirilis setiap November bersama rilis .NET yang baru; sebelumnya, versi baru muncul setiap dua sampai tiga tahun. Setiap versi dirancang agar kode yang sudah ada tetap bisa dikompilasi, dan pengecualian yang jarang terjadi (seperti field yang menjadi kata kunci di dalam accessor property di C# 14) didokumentasikan sebagai breaking change, jadi program yang ditulis untuk C# 2 hampir selalu masih bisa dikompilasi tanpa perubahan hari ini.
| Versi | Tahun | Tambahan penting |
|---|---|---|
| C# 2 | 2005 | Generic, nullable value type (int?), iterator (yield) |
| C# 3 | 2007 | LINQ, lambda expression, var, object initializer, extension method |
| C# 4 | 2010 | dynamic, parameter opsional dan bernama |
| C# 5 | 2012 | async dan await |
| C# 6 | 2015 | Interpolasi string $"...", nameof, null-conditional ?. |
| C# 7 | 2017 | Tuple, out var, pattern matching dengan is, pemisah digit |
| C# 8 | 2019 | Nullable reference type, switch expression, range s[1..4], ??=, async stream |
| C# 9 | 2020 | Record, accessor init, top-level statement, new() dengan target type |
| C# 10 | 2021 | Global using, file-scoped namespace, record struct |
| C# 11 | 2022 | Raw string literal """, member required, list pattern |
| C# 12 | 2023 | Primary constructor untuk class, collection expression [1, 2, 3] |
| C# 13 | 2024 | Collection params, tipe System.Threading.Lock |
| C# 14 | 2025 | Extension member, kata kunci field di property |
Versi yang lebih baru sebagian besar mengurangi kode seremonial. Program C# 9 ke atas ini memakai top-level statement (tanpa class Program, tanpa Main), sebuah record, dan sebuah switch expression:
// C# 9 and later, in a .NET 6+ project (implicit usings import System)
var order = new Order("Maya", 21.00m);
Console.WriteLine(Shipping(order));
static string Shipping(Order o) => o.Total switch
{
>= 50m => "free shipping",
>= 20m => "standard shipping",
_ => "shipping fee applies"
};
record Order(string Customer, decimal Total);
Logika yang sama dengan gaya eksplisit yang lebih lama, yang bisa dikompilasi di C# 6 dan semua versi sesudahnya:
Output:
standard shipping
Kedua bentuk sama-sama C# yang valid. Kamu akan bertemu gaya eksplisit yang lebih lama di kode yang sudah ada, tutorial, dan proyek Unity, dan gaya yang lebih pendek di proyek .NET baru.
LINQ: query data langsung di dalam bahasa
LINQ (Language Integrated Query, C# 3) adalah salah satu fitur yang sering disebut orang saat menjelaskan kenapa mereka suka C#. Dengan LINQ kamu bisa menyaring, mengurutkan, mengelompokkan, dan mengubah collection apa pun dengan rangkaian method:
Output:
95, 91, 88, 72
Average: 78.0
Best: 95
Sintaks yang sama berlaku untuk list di memori, tabel database lewat Entity Framework, dan XML. Selengkapnya di LINQ.
Apakah C# cocok sebagai bahasa pertama?
C# meminta lebih banyak di awal dibanding Python: kamu mendeklarasikan tipe, mengakhiri pernyataan dengan titik koma, dan meletakkan kode di dalam class. Sebagai gantinya, compiler menangkap kesalahan lebih awal, tool-nya (Visual Studio, VS Code, Rider) sangat bagus, dan konsepnya langsung bisa dipakai di Java, TypeScript, Kotlin, dan C++. Kalau kamu ingin membuat game Unity atau bekerja di perusahaan .NET, C# adalah pilihan yang jelas. Kalau tujuanmu analisis data atau machine learning, ekosistem Python lebih besar.
Untuk memulai, instal .NET SDK lalu jalankan dotnet new console, atau mulai dari Hello World dan jalankan contoh di halaman-halaman ini secara langsung.
Pertanyaan yang sering diajukan
Apa itu C#?
C# (dibaca "C sharp") adalah bahasa pemrograman serbaguna, bertipe statis dan berorientasi objek yang dibuat di Microsoft dan pertama kali dirilis pada 2002. Kode sumbernya dikompilasi menjadi bahasa perantara yang diubah oleh runtime .NET menjadi kode mesin, dengan memori yang dikelola garbage collector. C# dipakai untuk backend web, game Unity, aplikasi desktop, layanan cloud, dan tool.
Apakah C# sama dengan .NET?
Tidak. C# adalah bahasanya; .NET adalah platform tempat C# berjalan: runtime (CLR), base class library (System.Collections.Generic, System.IO, dan seterusnya) dan tool SDK. F# dan Visual Basic juga berjalan di .NET, dan sebuah versi C# biasanya dirilis bersama versi .NET (misalnya C# 12 dengan .NET 8).
C# dipakai untuk apa?
API dan situs web dengan ASP.NET Core, game dengan Unity (bahasa scripting-nya C#), aplikasi desktop Windows dengan WPF dan WinForms, aplikasi lintas platform dengan .NET MAUI, layanan cloud dan Azure Functions, serta tool command line. C# umum dipakai di software perusahaan dan studio game.
Apakah C# sulit dipelajari?
Sebagai bahasa pertama, tingkat kesulitannya sedang. Sintaksnya bergaya C dan lebih ketat daripada Python, karena setiap variabel punya tipe yang diperiksa compiler, tetapi memori dikelola untukmu dan pesan error-nya jelas. Kebanyakan pemula bisa menulis program console yang berguna setelah beberapa minggu berlatih.
Apakah C# masih layak dipelajari?
Ya. C# selalu termasuk bahasa yang paling banyak dipakai dalam survei developer, .NET bersifat open source dan lintas platform, dan bahasanya mendapat versi baru setiap November. C# adalah pilihan yang praktis kalau kamu ingin membuat game di Unity atau bekerja di perusahaan yang dibangun di atas teknologi Microsoft.