Dasar-dasar C#
Mempelajari syntax dan fitur dasar bahasa pemrograman C#
Dasar-dasar C#
C# (dibaca “C sharp”) adalah bahasa pemrograman modern yang dikembangkan oleh Microsoft. Bahasa ini strongly-typed, object-oriented, dan terus berkembang dengan fitur-fitur baru di setiap versi.
Data Types
C# memiliki berbagai tipe data yang bisa digunakan:
Value Types
// Integer types
byte usia = 25; // 0 to 255
short angkaKecil = 100; // -32,768 to 32,767
int angka = 1000; // paling umum digunakan
long angkaBesar = 1000000L;
// Floating point
float suhu = 36.5f; // 7 digit presisi
double harga = 99.99; // 15-16 digit presisi
decimal uang = 1000.50m; // untuk uang, 28-29 digit
// Boolean
bool aktif = true;
// Character
char huruf = 'A';
Reference Types
// String
string nama = "Anjar Priantoro";
string kosong = "";
string? nullable = null; // nullable string (C# 8+)
// Array
int[] angka = { 1, 2, 3, 4, 5 };
string[] nama = new string[3];
// Object
object obj = "bisa apa saja";
Operators
Arithmetic Operators
int a = 10, b = 3;
int tambah = a + b; // 13
int kurang = a - b; // 7
int kali = a * b; // 30
int bagi = a / b; // 3 (integer division)
int sisa = a % b; // 1 (modulus)
// Increment/Decrement
a++; // a = 11
b--; // b = 2
Comparison Operators
int x = 5, y = 10;
bool samaDengan = x == y; // false
bool tidakSama = x != y; // true
bool lebihBesar = x > y; // false
bool lebihKecil = x < y; // true
bool lebihSamaDengan = x >= 5; // true
Logical Operators
bool a = true, b = false;
bool dan = a && b; // false (AND)
bool atau = a || b; // true (OR)
bool tidak = !a; // false (NOT)
Control Flow
If-Else
int nilai = 85;
if (nilai >= 90)
{
Console.WriteLine("A - Excellent!");
}
else if (nilai >= 80)
{
Console.WriteLine("B - Good");
}
else if (nilai >= 70)
{
Console.WriteLine("C - Average");
}
else
{
Console.WriteLine("Perlu belajar lagi");
}
Ternary Operator
int umur = 20;
string status = umur >= 18 ? "Dewasa" : "Anak-anak";
Switch Statement
string hari = "Senin";
switch (hari)
{
case "Senin":
case "Selasa":
case "Rabu":
case "Kamis":
case "Jumat":
Console.WriteLine("Hari kerja");
break;
case "Sabtu":
case "Minggu":
Console.WriteLine("Akhir pekan");
break;
default:
Console.WriteLine("Hari tidak valid");
break;
}
Switch Expression (C# 8+)
string hari = "Sabtu";
string jenis = hari switch
{
"Senin" or "Selasa" or "Rabu" or "Kamis" or "Jumat" => "Hari kerja",
"Sabtu" or "Minggu" => "Akhir pekan",
_ => "Tidak valid"
};
Methods (Functions)
Basic Method
// Method tanpa return value
void SayHello(string nama)
{
Console.WriteLine($"Hello, {nama}!");
}
// Method dengan return value
int Tambah(int a, int b)
{
return a + b;
}
// Menggunakan method
SayHello("Anjar");
int hasil = Tambah(5, 3);
Optional Parameters
void Greet(string nama, string sapaan = "Halo")
{
Console.WriteLine($"{sapaan}, {nama}!");
}
Greet("Anjar"); // "Halo, Anjar!"
Greet("Anjar", "Hi"); // "Hi, Anjar!"
Named Arguments
void BuatUser(string nama, int umur, string kota)
{
Console.WriteLine($"{nama}, {umur} tahun, dari {kota}");
}
// Menggunakan named arguments
BuatUser(nama: "Anjar", kota: "Jakarta", umur: 25);
Expression-bodied Members
// Untuk method sederhana
int Kuadrat(int n) => n * n;
string GetFullName(string first, string last) => $"{first} {last}";
Classes dan Objects
Basic Class
public class Mahasiswa
{
// Properties
public string Nama { get; set; }
public int Umur { get; set; }
public string Jurusan { get; set; }
// Constructor
public Mahasiswa(string nama, int umur, string jurusan)
{
Nama = nama;
Umur = umur;
Jurusan = jurusan;
}
// Method
public void Perkenalan()
{
Console.WriteLine($"Halo, saya {Nama}, mahasiswa {Jurusan}");
}
}
// Membuat object
var mahasiswa = new Mahasiswa("Anjar", 22, "Informatika");
mahasiswa.Perkenalan();
Properties dengan Validation
public class Produk
{
private decimal _harga;
public string Nama { get; set; }
public decimal Harga
{
get => _harga;
set
{
if (value < 0)
throw new ArgumentException("Harga tidak boleh negatif");
_harga = value;
}
}
// Read-only property
public decimal HargaDiskon => _harga * 0.9m;
}
Records (C# 9+)
// Immutable data class yang simple
public record Person(string Nama, int Umur);
// Penggunaan
var person1 = new Person("Anjar", 25);
var person2 = person1 with { Umur = 26 }; // copy dengan modifikasi
Console.WriteLine(person1 == person2); // false (value comparison)
Null Handling
Nullable Types
int? nilaiNullable = null; // nullable int
string? namaNullable = null; // nullable string (C# 8+)
// Cek null
if (nilaiNullable.HasValue)
{
Console.WriteLine(nilaiNullable.Value);
}
// Null-coalescing operator
int nilai = nilaiNullable ?? 0; // gunakan 0 jika null
// Null-conditional operator
string? nama = null;
int? panjang = nama?.Length; // null, bukan error
Pattern Matching dengan Null
object? data = GetData();
if (data is string s)
{
Console.WriteLine($"String: {s}");
}
else if (data is int n)
{
Console.WriteLine($"Integer: {n}");
}
else if (data is null)
{
Console.WriteLine("Data kosong");
}
Exception Handling
try
{
int hasil = 10 / 0; // akan error
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"Error pembagian: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Error umum: {ex.Message}");
}
finally
{
Console.WriteLine("Ini selalu dijalankan");
}
LINQ (Language Integrated Query)
LINQ adalah salah satu fitur paling powerful di C#:
List<int> angka = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Filter angka genap
var genap = angka.Where(n => n % 2 == 0);
// Transform
var kuadrat = angka.Select(n => n * n);
// Kombinasi
var hasil = angka
.Where(n => n > 5)
.Select(n => n * 2)
.OrderByDescending(n => n)
.ToList();
// Aggregate
int total = angka.Sum();
double average = angka.Average();
int max = angka.Max();
Langkah Selanjutnya
Setelah memahami dasar-dasar C#, lanjutkan ke:
- ASP.NET Core — Membangun web API dan aplikasi web
- Entity Framework Core — Database access dengan ORM
- Async/Await — Pemrograman asynchronous
Tip: Praktik adalah kunci! Coba buat project kecil untuk mengasah skill C# Anda.