Gambaran umum kelas, struct, dan rekaman di C #

Dalam C#, definisi jenis—kelas, struct, atau rekaman—seperti cetak biru yang menentukan apa yang dapat dilakukan jenis tersebut. Objek pada dasarnya adalah blok memori yang telah dialokasikan dan dikonfigurasi sesuai dengan cetak biru tersebut. Artikel ini memberikan gambaran umum tentang cetak biru dan fiturnya. Artikel berikutnya dalam seri ini memperkenalkan objek.

Enkapsulasi

Enkapulasi terkadang disebut sebagai pilar pertama atau prinsip pemrograman berorientasi-objek. Kelas atau struktur dapat menentukan seberapa mudah diakses setiap anggotanya untuk membuat kode di luar kelas atau struktur. Metode dan variabel yang tidak dimaksudkan untuk digunakan dari luar kelas atau perakitan dapat disembunyikan untuk membatasi potensi kesalahan pengodean atau penyalahgunaan yang berbahaya. Untuk informasi selengkapnya, lihat tutorial pemrograman berorientasi-objek.

Anggota

Anggota dari suatu jenis mencakup semua metode, bidang, konstanta, properti, dan peristiwa. Dalam C#, tidak ada variabel atau metode global seperti yang ada dalam beberapa bahasa lain. Bahkan titik masuk program, metode Main, harus dinyatakan dalam kelas atau struktur (secara implisit ketika Anda menggunakan pernyataan tingkat-atas).

Daftar berikut mencakup semua jenis anggota yang bisa dinyatakan dalam kelas, struktur, atau rekaman.

  • Bidang
  • Konstanta
  • Properti
  • Metode
  • Konstruktor
  • Acara
  • Penutup
  • Pengindeks
  • Operator
  • Jenis Berlapis

Untuk informasi selengkapnya, lihat Anggota.

Aksesibilitas

Beberapa metode dan properti dimaksudkan untuk dipanggil atau diakses dari kode luar kelas atau struktur, yang dikenal sebagai kode klien. Metode dan properti lain mungkin hanya untuk digunakan di kelas atau struktur itu sendiri. Anda perlu membatasi aksesibilitas kode Anda sehingga hanya kode klien yang dimaksudkan yang dapat mencapainya. Anda menentukan kemudahan akses jenis Anda dan anggotanya oleh kode klien dengan menggunakan pengubah akses berikut:

Aksesibilitas default adalah private.

Warisan

Kelas (tetapi bukan struktur) mendukung konsep warisan. Kelas yang berasal dari kelas lain, yang disebut kelas dasar, secara otomatis berisi semua anggota publik, terlindungi, dan internal kelas dasar kecuali konstruktor dan finalizernya.

Kelas dapat dinyatakan sebagai abstrak, yang berarti bahwa satu atau beberapa metodenya tidak memiliki implementasi. Meskipun kelas abstrak tidak dapat dibuat secara langsung, kelas tersebut dapat berfungsi sebagai kelas dasar untuk kelas lain yang menyediakan implementasi yang hilang. Kelas juga dapat dinyatakan sebagai disegel untuk mencegah kelas lain mewarisinya.

Untuk informasi lebih lanjut, lihat Warisan dan Polimorfisme.

Antarmuka

Kelas, struktur, dan rekaman dapat mengimplementasikan beberapa antarmuka. Untuk mengimplementasikan dari antarmuka berarti bahwa jenis mengimplementasikan semua metode yang ditentukan dalam antarmuka. Untuk informasi selengkapnya, lihat Antarmuka.

Tipe Generik

Kelas, struktur, dan rekaman dapat didefinisikan dengan satu atau beberapa parameter jenis. Kode klien menyediakan jenis saat membuat instans jenis. Misalnya, Kelas List<T> di namespace System.Collections.Generic didefinisikan dengan satu parameter jenis. Kode klien membuat instans List<string> atau List<int> untuk menentukan jenis yang akan menjadi panduan daftar. Untuk informasi selengkapnya, lihat Generik.

Tipe Statis

Kelas (tetapi bukan struktur atau rekaman) dapat dinyatakan sebagai static. Kelas statis hanya dapat berisi anggota statis dan tidak dapat dibuat dengan kata kunci new. Satu salinan kelas dimuat ke dalam memori ketika program dimuat, dan anggotanya diakses melalui nama kelas. Kelas, struktur, dan rekaman dapat berisi anggota statis. Untuk informasi selengkapnya, lihat Kelas statis dan anggota kelas statis.

Jenis Berlapis

Kelas, struktur, atau rekaman dapat ditumpuk dalam kelas, struktur, atau rekaman lain. Untuk informasi selengkapnya, lihat Jenis Berlapis.

Jenis Parsial

Anda dapat menentukan bagian dari kelas, struktur, atau metode dalam satu file kode dan bagian lain dalam file kode terpisah. Untuk informasi selengkapnya, lihat Kelas dan Metode Parsial.

Penginisial Objek

Anda dapat membuat instans dan menginisialisasi kelas atau membuat struktur objek, dan kumpulan objek, dengan menetapkan nilai ke propertinya. Untuk informasi selengkapnya, lihat Cara menginisialisasi objek dengan menggunakan penginisial objek.

Tipe anonim

Dalam situasi yang tidak mudah atau perlu untuk membuat kelas bernama, Anda bisa menggunakan jenis anonim. Jenis anonim ditentukan oleh anggota data bernama mereka. Untuk informasi lebih lanjut, lihat Jenis anonim .

Metode Ekstensi

Anda dapat "memperluas" kelas tanpa membuat kelas turunan dengan membuat jenis terpisah. Jenis tersebut berisi metode yang dapat dipanggil seolah-olah mereka termasuk dalam jenis asli. Untuk informasi selengkapnya, lihat Metode ekstensi).

Variabel Lokal dengan Jenis Implisit

Dalam kelas atau metode struktur, Anda dapat menggunakan pengetikan implisit untuk meminta pengkompilasi agar menentukan jenis variabel pada waktu kompilasi. Untuk informasi selengkapnya, lihat var referensi (C# ).

Rekaman

C# 9 memperkenalkan jenis record, jenis referensi yang dapat Anda buat alih-alih kelas atau struktur. Rekaman adalah kelas dengan perilaku bawaan untuk merangkum data dalam jenis yang tidak dapat diubah. C# 10 memperkenalkan jenis nilai record struct. Rekaman (baik record class atau record struct) menyediakan fitur berikut:

  • Sintaks yang ringkas untuk membuat jenis referensi dengan properti yang tidak dapat diubah.
  • Kesetaraan nilai. Dua variabel jenis rekaman adalah sama jika memiliki jenis yang sama, dan jika, untuk setiap bidang, nilai di kedua rekaman tersebut juga sama. Kelas menggunakan kesetaraan referensi: dua variabel jenis kelas dianggap sama jika merujuk ke objek yang sama.
  • Sintaks ringkas untuk mutasi yang tidak merusak. Ekspresi with memungkinkan Anda membuat instans rekaman baru yang merupakan salinan instans yang sudah ada tetapi dengan perubahan nilai properti tertentu.
  • Pemformatan bawaan untuk ditampilkan. Metode ToString mencetak nama jenis rekaman dan nama dan nilai properti publik.
  • Dukungan untuk hierarki pewarisan di kelas rekaman. Kelas rekaman mendukung pewarisan. Struktur rekaman tidak mendukung pewarisan.

Untuk informasi selengkapnya, lihat Rekaman.

Spesifikasi Bahasa C#

Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.