Struct dan Class pada C#, Apa Perbedaannya?

Struct dan Class pada C#, Apa Perbedaannya?
Photo by Pedro Henrique Santos / Unsplash

Dalam bahasa pemrograman C#, kita memiliki dua jenis tipe data utama untuk menyusun objek: Struct dan Class. Meskipun keduanya terlihat mirip, ada perbedaan mendasar yang sangat penting dalam cara mereka menyimpan dan mengelola data.

Singkatnya:

StructTipe value, lebih ringan, disimpan di stack, cocok untuk data kecil.
ClassTipe reference, lebih fleksibel, disimpan di heap, cocok untuk objek kompleks.

Artikel ini akan menjelaskan secara rinci perbedaan antara Struct dan Class, bagaimana cara menggunakannya, serta kapan kita sebaiknya memilih salah satu di antara keduanya!

1. Apa Itu Struct dalam C#?

Struct (struktur) adalah tipe data value type yang digunakan untuk menyimpan data kecil dengan performa tinggi. Karena Struct disimpan di stack, aksesnya lebih cepat dibandingkan Class yang disimpan di heap.

Catatan: Struct cocok digunakan untuk data yang bersifat immutable (tidak sering berubah) dan memiliki ukuran kecil.

📌 Contoh Penggunaan Struct

using System;

struct Titik {
    public int X;
    public int Y;

    public Titik(int x, int y) {
        X = x;
        Y = y;
    }
}

class Program {
    static void Main() {
        Titik titik1 = new Titik(10, 20);
        Console.WriteLine($"Koordinat: ({titik1.X}, {titik1.Y})");
    }
}

Output:

Koordinat: (10, 20)

Penjelasan:

  • Titik adalah struct yang memiliki dua field (X dan Y).
  • Struct tidak mendukung inheritance (pewarisan).
  • Struct disimpan di stack, sehingga lebih efisien untuk data kecil.

2. Apa Itu Class dalam C#?

Class adalah tipe data reference type yang digunakan untuk objek yang lebih kompleks. Class disimpan di heap, sehingga lebih fleksibel dalam manajemen memori.

Catatan: Class cocok digunakan untuk objek yang memiliki banyak method, bisa berubah-ubah, dan membutuhkan pewarisan (inheritance).

📌 Contoh Penggunaan Class

using System;

class Titik {
    public int X;
    public int Y;

    public Titik(int x, int y) {
        X = x;
        Y = y;
    }
}

class Program {
    static void Main() {
        Titik titik1 = new Titik(10, 20);
        Titik titik2 = titik1; // Menggunakan referensi yang sama

        titik2.X = 50; // Mengubah nilai X di titik2 juga mengubah titik1
        Console.WriteLine($"Titik 1: ({titik1.X}, {titik1.Y})");
        Console.WriteLine($"Titik 2: ({titik2.X}, {titik2.Y})");
    }
}

Output:

Titik 1: (50, 20)
Titik 2: (50, 20)

Penjelasan:

  • Titik adalah class, sehingga titik1 dan titik2 mengacu pada objek yang sama di heap.
  • Perubahan pada titik2 juga mempengaruhi titik1, karena mereka berbagi referensi yang sama.
  • Class mendukung inheritance (pewarisan), tidak seperti Struct.

3. Perbedaan Utama antara Struct dan Class

Perbedaan Struct Class
Tipe Data Value Type (disimpan di stack) Reference Type (disimpan di heap)
Digunakan untuk Data kecil dan tidak sering berubah Data kompleks dan sering berubah
Pewarisan (Inheritance) ❌ Tidak mendukung ✅ Mendukung
Kinerja (Performance) Lebih cepat karena di stack Lebih fleksibel tapi bisa lebih lambat
Menggunakan Referensi? ❌ Tidak (nilai independen) ✅ Ya (berbagi referensi)

4. Kapan Harus Menggunakan Struct dan Class?

Gunakan Struct jika:

  • Data bersifat immutable (tidak berubah).
  • Ukuran objek kecil (misalnya koordinat, warna, atau tanggal).
  • Tidak membutuhkan fitur inheritance.
  • Performa penting dan ingin menghindari alokasi di heap.

Gunakan Class jika:

  • Data kompleks dan sering berubah.
  • Membutuhkan pewarisan (inheritance).
  • Data harus berbagi referensi antar objek.
  • Objek berukuran besar dan tidak cocok disimpan di stack.

5. Kesimpulan

  • Struct adalah tipe value yang disimpan di stack dan cocok untuk data kecil.
  • Class adalah tipe reference yang disimpan di heap dan cocok untuk data kompleks.
  • Struct tidak bisa diwarisi (inheritance), sedangkan Class mendukung pewarisan.
  • Gunakan Struct jika ingin performa lebih cepat untuk data kecil, dan gunakan Class jika membutuhkan fleksibilitas lebih.

Dengan memahami perbedaan Struct dan Class, kamu bisa menulis kode yang lebih efisien, optimal, dan sesuai kebutuhan aplikasi!

Read more