Docs .NET Development Dasar-dasar C#

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:

  1. ASP.NET Core — Membangun web API dan aplikasi web
  2. Entity Framework Core — Database access dengan ORM
  3. Async/Await — Pemrograman asynchronous

Tip: Praktik adalah kunci! Coba buat project kecil untuk mengasah skill C# Anda.