Oluşturucular (C# programlama kılavuzu)

Bir sınıfın veya yapının bir örneği her oluşturulduğunda, oluşturucu çağrılır. Bir sınıf veya yapı, farklı bağımsız değişkenlere sahip birden çok oluşturucuya sahip olabilir. Oluşturucular programcının varsayılan değerleri ayarlamasına, örneklemeyi sınırlamasına ve esnek ve kolay okunabilen kod yazmasına olanak tanır. Daha fazla bilgi ve örnek için bkz . Örnek oluşturucuları ve Oluşturucuları kullanma.

Yeni bir örneği başlatmanın bir parçası olan birkaç eylem vardır. Bu eylemler aşağıdaki sırayla gerçekleştirilir:

  1. Örnek alanları 0 olarak ayarlanır. Bu genellikle çalışma zamanı tarafından yapılır.
  2. Alan başlatıcıları çalışır. En türetilmiş türdeki alan başlatıcıları çalıştırır.
  3. Temel tür alan başlatıcıları çalıştırılır. Her taban türü aracılığıyla doğrudan taban ile başlayan alan başlatıcıları olarak System.Object.
  4. Temel örnek oluşturucuları çalışır. Her temel sınıftan doğrudan temel sınıfa kadar Object.Object olan tüm örnek oluşturucuları.
  5. Örnek oluşturucu çalışır. Türü için örnek oluşturucu çalışır.
  6. Nesne başlatıcılar çalışır. İfade herhangi bir nesne başlatıcı içeriyorsa, bunlar örnek oluşturucusu çalıştırıldıktan sonra çalışır. Nesne başlatıcılar metin sırasına göre çalışır.

Önceki eylemler yeni bir örnek başlatıldığında gerçekleşir. Yeni bir örneği struct değerine ayarlanırsa default , tüm örnek alanları 0 olarak ayarlanır.

Statik oluşturucu çalıştırılmamışsa, örnek oluşturucu eylemlerinden herhangi biri gerçekleşmeden önce statik oluşturucu çalışır.

Oluşturucu söz dizimi

Oluşturucu, adı türünün adıyla aynı olan bir yöntemdir. Yöntem imzası yalnızca isteğe bağlı bir erişim değiştiricisi, yöntem adını ve parametre listesini içerir; dönüş türü içermez. Aşağıdaki örnek adlı Personbir sınıfın oluşturucusunu gösterir.

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

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

   // Remaining implementation of Person class.
}

Bir oluşturucu tek bir deyim olarak uygulanabiliyorsa, ifade gövdesi tanımını kullanabilirsiniz. Aşağıdaki örnek, oluşturucusunun name adlı tek bir dize parametresine sahip olan bir Location sınıfı tanımlar. İfade gövdesi tanımı bağımsız değişkeni locationName alana atar.

public class Location
{
   private string locationName;

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

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

Statik oluşturucular

Önceki örneklerde, yeni bir nesne oluşturan tüm örnek oluşturucuları gösterilmiştir. Bir sınıf veya yapı, türün statik üyelerini başlatan statik bir oluşturucuya da sahip olabilir. Statik oluşturucular parametresizdir. Statik alanları başlatmak için statik bir oluşturucu sağlamazsanız, C# derleyicisi, C# türlerinin Varsayılan değerleri makalesinde listelenen statik alanları varsayılan değerlerine başlatır.

Aşağıdaki örnek, statik bir alan başlatmak için statik bir oluşturucu kullanır.

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.
}

Aşağıdaki örnekte gösterildiği gibi ifade gövdesi tanımına sahip bir statik oluşturucu da tanımlayabilirsiniz.

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.
}

Daha fazla bilgi ve örnek için bkz . Statik Oluşturucular.

Bu Bölümde

Ayrıca bkz.