Konstruktor (Panduan pemrograman C#)

Setiap kali instans kelas atau struct dibuat, konstruktornya dipanggil. Kelas atau struct mungkin memiliki beberapa konstruktor yang mengambil argumen yang berbeda. Konstruktor memungkinkan programmer mengatur nilai default, membatasi instansiasi, dan menulis kode yang fleksibel dan mudah dibaca. Untuk informasi dan contoh selengkapnya, lihat Konstruktor instans dan Menggunakan konstruktor.

Ada beberapa tindakan yang merupakan bagian dari menginisialisasi instans baru. Tindakan tersebut terjadi dalam urutan berikut:

  1. Bidang instans diatur ke 0. Ini biasanya dilakukan oleh runtime.
  2. Penginisialisasi bidang berjalan. Penginisialisasi bidang dalam jenis eksekusi yang paling turunan.
  3. Penginisialisasi bidang jenis dasar berjalan. Penginisialisasi bidang dimulai dengan dasar langsung melalui setiap jenis dasar ke System.Object.
  4. Konstruktor instans dasar berjalan. Setiap konstruktor instans, dimulai dengan Object.Object melalui setiap kelas dasar ke kelas dasar langsung.
  5. Konstruktor instans berjalan. Konstruktor instans untuk jenis berjalan.
  6. Penginisialisasi objek berjalan. Jika ekspresi menyertakan penginisialisasi objek apa pun, penginisialisasi tersebut berjalan setelah konstruktor instans berjalan. Penginisialisasi objek berjalan dalam urutan tekstual.

Tindakan sebelumnya terjadi saat instans baru diinisialisasi. Jika instans struct baru diatur ke nilainya default , semua bidang instans diatur ke 0.

Jika konstruktor statis belum berjalan, konstruktor statis berjalan sebelum salah satu tindakan konstruktor instans terjadi.

Sintaks konstruktor

Konstruktor adalah metode yang namanya sama dengan nama jenisnya. Tanda tangan metodenya hanya mencakup pengubah akses opsional, nama metode dan daftar parameternya; tidak termasuk jenis pengembalian. Contoh berikut menunjukkan konstruktor untuk kelas bernama Person.

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }

   // Remaining implementation of Person class.
}

Jika konstruktor dapat diimplementasikan sebagai pernyataan tunggal, Anda dapat menggunakan definisi isi ekspresi. Contoh berikut mendefinisikan Location kelas yang konstruktornya memiliki satu parameter string bernama nama. Definisi isi ekspresi menetapkan argumen ke bidang locationName.

public class Location
{
   private string locationName;

   public Location(string name) => Name = name;

   public string Name
   {
      get => locationName;
      set => locationName = value;
   }
}

Konstruktor statik

Contoh sebelumnya memiliki semua konstruktor instans yang ditampilkan, yang membuat objek baru. Kelas atau struktur juga dapat memiliki konstruktor statis, yang menginisialisasi anggota statis dari jenis tersebut. Konstruktor statis tidak memiliki parameter. Jika Anda tidak menyediakan konstruktor statis untuk menginisialisasi bidang statis, compiler C# menginisialisasi bidang statis ke nilai defaultnya seperti yang tercantum dalam artikel Nilai default jenis C#.

Contoh berikut menggunakan konstruktor statis untuk menginisialisasi bidang statis.

public class Adult : Person
{
   private static int minimumAge;

   public Adult(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Adult()
   {
      minimumAge = 18;
   }

   // Remaining implementation of Adult class.
}

Anda juga dapat menentukan konstruktor statis dengan definisi isi ekspresi, seperti yang ditunjukkan contoh berikut.

public class Child : Person
{
   private static int maximumAge;

   public Child(string lastName, string firstName) : base(lastName, firstName)
   { }

   static Child() => maximumAge = 18;

   // Remaining implementation of Child class.
}

Untuk informasi dan contoh selengkapnya, lihat Konstruktor Statis.

Di Bagian Ini

Lihat juga