Aracılığıyla paylaş


Kurucular (C# Programlama Kılavuzu) kullanma

Zaman bir sınıfı veya struct olan oluşturan, onun kurucusu çağrılır.Kurucular sınıf veya yapı birimi olarak aynı ada sahip ve bunlar genellikle veri üyeleri yeni nesnenin başlatılamıyor.

Aşağıdaki örnekte, adlı bir sınıf Taxi basit bir kurucu kullanarak tanımlanır.Bu sınıf ile Örneklendirilmiş Yeni işleci.Taxi Kurucusu tarafından çağrılır new işleç bellek hemen sonra yeni nesne için ayrılır.

public class Taxi
{
    public bool isInitialized;
    public Taxi()
    {
        isInitialized = true;
    }
}

class TestTaxi
{
    static void Main()
    {
        Taxi t = new Taxi();
        Console.WriteLine(t.isInitialized);
    }
}

Bir oluşturucu parametre almaz adlı bir bir varsayýlan kurucu.Varsayılan oluşturucular çağrılan kullanarak bir nesne örneği her new için işleç ve hiçbir bağımsız değişken sağlanan new.Daha fazla bilgi için bkz. Örnek oluşturucular (C# Programlama Kılavuzu).

Bir sınıf olmadığı sürece statik, Oluşturucular, sınıf örneğini oluşturmada etkinleştirmek için C# derleyicisi tarafından bir ortak varsayılan oluşturucu verilir olmadan sınıfları.Daha fazla bilgi için bkz. Statik sınıflar ve statik sınıf üyelerini (C# Programlama Kılavuzu).

Bir sınıf yapıcısı özel gibi yaparak oluþturulmasýný engelleyebilirsiniz:

class NLog
{
    // Private Constructor:
    private NLog() { }

    public static double e = Math.E;  //2.71828...
}

Daha fazla bilgi için bkz. Özel Kurucular (C# Programlama Kılavuzu).

Kurucular için struct türleri sınıf oluşturucuları, benzer ancak structs bir derleyici tarafından otomatik olarak sağlandığından açık varsayılan oluşturucu içeremez.Her alanda bu Oluşturucu başlatır struct için varsayılan değerleri.Daha fazla bilgi için bkz. Varsayılan değerler tablosu (C# Reference).Ancak, bu varsayılan kurucu yalnızca varsa çağrılır struct ile örneklenen new.Örneğin, bu kod için varsayılan oluşturucu kullanır Int32, böylece tamsayı başlatıldığını geleceğinden emin olursunuz:

int i = new int();
Console.WriteLine(i);

Kullanmaz çünkü aşağıdaki kod, ancak, bir derleyici hatasına neden new, ve bunu henüz başlatılmamış olan bir nesneyi kullanmaya çalışır:

int i;
Console.WriteLine(i);

Alternatif olarak, nesnelerin temel structs (tüm yerleşik sayısal türler de dahil olmak üzere) başlatıldı veya atanabilir ve sonra aşağıdaki örnekte olduğu gibi kullanılır:

int a = 44;  // Initialize the value type...
int b;
b = 33;      // Or assign it before using it.
Console.WriteLine("{0}, {1}", a, b);

Böylece bir değer türü için varsayılan kurucuyu çağırarak gerekli değildir.

Her iki sınıf ve structs parametre almaz kurucular tanımlayabilirsiniz.Parametre almaz yapıcılar denilen, üzerinden bir new deyimi veya bir temel ifadesi.Sınıflar ve structs birden çok kurucular da tanımlayabilir ve hiçbiri varsayılan oluşturucuyu tanımlamak için gereklidir.Örne?in:

public class Employee
{
    public int salary;

    public Employee(int annualSalary)
    {
        salary = annualSalary;
    }

    public Employee(int weeklySalary, int numberOfWeeks)
    {
        salary = weeklySalary * numberOfWeeks;
    }
}

Bu sınıf, aşağıdaki deyimleri kullanarak oluşturulabilir:

Employee e1 = new Employee(30000);
Employee e2 = new Employee(500, 52);

Bir kurucu kullanabilirsiniz base bir temel sınıf kurucusunu çağırmak için anahtar sözcük.Örne?in:

public class Manager : Employee
{
    public Manager(int annualSalary)
        : base(annualSalary)
    {
        //Add further instructions here.
    }
}

Bu örnekte, Oluşturucu için bloğu yürütülmeden önce temel sınıf Oluşturucusu denir.base Anahtar sözcüğünü ya da parametre olmadan kullanılabilir.Yapıcısına herhangi bir parametre için parametre olarak kullanılan base, veya ifadenin bir parçası olarak.Daha fazla bilgi için bkz. Bankası (C# Reference).

Temel sınıf kurucusunu açıkça kullanarak çağrılmazsa türetilmiş bir sınıf içinde base anahtar sözcüğü, varsayılan kurucu varsa, çağrıldığında dolaylı olarak.Bu aşağıdaki Oluşturucu bildirimi etkili bir şekilde aynı olduğu anlamına gelir:

public Manager(int initialdata)
{
    //Add further instructions here.
}
public Manager(int initialdata)
    : base()
{
    //Add further instructions here.
}

Bir temel sınıfın varsayılan bir oluşturucusu vermiyorsa, türetilmiş sınıf temel oluşturucu için açık çağrı kullanarak yapmanız gerekir base.

Bir kurucu kullanarak aynı nesnede başka bir yapıcı çağırabilirsiniz Bu anahtar sözcük.Gibi base, this ile veya parametre olmadan kullanılabilir ve parametre olarak herhangi bir oluşturucu parametrelerinde kullanılabilir this, veya ifadenin bir parçası olarak.Örneğin, önceki örnekteki ikinci Oluşturucu kullanarak yazılabilir this:

public Employee(int weeklySalary, int numberOfWeeks)
    : this(weeklySalary * numberOfWeeks)
{
}

Kullanımı, this önceki örnekte anahtar sözcüğü bu Oluşturucu çağrılacak neden olur:

public Employee(int annualSalary)
{
    salary = annualSalary;
}

Kurucular işaretlenir olarak ortak, özel, Korunan, , veya protectedinternal. Bu erişim değiştiricileri nasıl kullanıcı sınıfının sınıf oluşturabilir tanımlayın.Daha fazla bilgi için bkz: Erişim değiştiricileri.

Bir kurucu kullanarak statik bildirilebilir statik anahtar sözcük.Hemen herhangi bir statik alanlar erişilir ve genellikle statik sınıf üyelerini başlatmak için kullanılan önce statik oluşturucular otomatik olarak adlandırılır.Daha fazla bilgi için bkz: Statik oluşturucular.

C# dil belirtimi

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

Sınıflar ve yapılar (C# Programlama Kılavuzu)

Kurucular (C# Programlama Kılavuzu)

Yıkıcı (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu