Aracılığıyla paylaş


Örnek oluşturucular (C# Programlama Kılavuzu)

Örnek oluşturucular oluşturup kullandığınızda, herhangi bir örnek üye değişkenlerini başlatmak için kullanılan Yeni bir nesne oluşturmak için ifade bir sınıfı.Başlatmak için bir statik sınıf veya statik olmayan sınıfındaki statik değişkenler statik bir oluşturucu tanımlamalıdır.Daha fazla bilgi için bkz. Statik Kurucular (C# Programlama Kılavuzu).

Aşağıdaki örnek, örnek oluşturucu gösterir:

class CoOrds
{
    public int x, y;

    // constructor
    public CoOrds()
    {
        x = 0;
        y = 0;
    }
}

[!NOT]

Netlik sağlamak için bu sınıfın ortak alanları içerir.Bir programın herhangi bir yerinde herhangi bir yöntemi sınırsız ve doğrulanmamış bir nesnenin iç işleyişini erişim sağladığından, ortak alanların kullanımı önerilen bir programlama yöntemi değil.Veri üyeleri genellikle özel olması gerekir ve yalnızca sınıfı yöntemlerini ve özelliklerini erişilmelidir.

Bu örnek oluşturucu her nesneye dayalı olarak adlandırılan CoOrds sınıf oluşturulur.Hiçbir baðýmsýz deðiþken almaz, bu oluşum verilir gibi yapıcı bir varsayýlan kurucu.Ancak, genellikle ek Kurucular sağlamak yararlı olur.Örneğin, bir kurucu ekleyebiliriz CoOrds veri üyeleri için ilk değerleri belirtmek bize sağlayan bir sınıf:

// tcA constructor with two arguments:
public CoOrds(int x, int y)
{
    this.x = x;
    this.y = y;
}

Böylece, CoOrd varsayılan veya özel başlangıç değerleri ile oluşturulan nesneleri böyle:

CoOrds p1 = new CoOrds();
CoOrds p2 = new CoOrds(5, 3);

Bir sınıf bir oluşturucuya sahip değil, varsayılan bir kurucusu otomatik olarak oluşturulur ve nesne alanları başlatmak için varsayılan değerler kullanılır.Örneğin, bir int 0 olarak başlatılır.Varsayılan değerler hakkında daha fazla bilgi için bkz: Varsayılan değerler tablosu (C# Reference).Bu nedenle, çünkü CoOrds sınıfı varsayılan kurucuyu sıfıra tüm veri üyeleri başlatır, sınıf çalışma şeklini değiştirmeden tamamen kaldırılabilir.Birden çok oluşturucuları kullanmayı tam bir örnek örnek 1'de bu konuda sağlanan ve otomatik olarak oluşturulan bir oluşturucu örneği Örnek 2'de verilmiştir.

Örnek oluşturucular, temel sınıflar, örnek oluşturucular çağırmak için de kullanılabilir.Başlatıcı ile temel sınıf yapıcısı sınıf kurucusunu aþaðýdaki gibi baþlatabilirsiniz:

class Circle : Shape
{
    public Circle(double radius)
        : base(radius, 0)
    {
    }
}

Bu örnekte, Circle sınıfı tarafından sağlanan kurucusuna RADIUS ve yüksekliği gösteren değerleri geçen Shape , Circle türetilmiştir.Tam örnek kullanarak Shape ve Circle bu konudaki örnek 3 olarak görünür.

Örnek 1

Aşağıdaki örnek, iki sınıf Kurucularını, bir bağımsız değişken olmadan ve iki bağımsız değişken olan bir sınıf gösterir.

class CoOrds
{
    public int x, y;

    // Default constructor:
    public CoOrds()
    {
        x = 0;
        y = 0;
    }

    // tcA constructor with two arguments:
    public CoOrds(int x, int y)
    {
        this.x = x;
        this.y = y;
    }

    // Override the ToString method:
    public override string ToString()
    {
        return (String.Format("({0},{1})", x, y));
    }
}

class MainClass
{
    static void Main()
    {
        CoOrds p1 = new CoOrds();
        CoOrds p2 = new CoOrds(5, 3);

        // Display the results using the overriden ToString method:
        Console.WriteLine("CoOrds #1 at {0}", p1);
        Console.WriteLine("CoOrds #2 at {0}", p2);
        Console.ReadKey();
    }
}
/* Output:
 CoOrds #1 at (0,0)
 CoOrds #2 at (5,3)        
*/

Örnek 2

Bu örnekte, sınıfı Person durumda, varsayılan bir kurucusu otomatik olarak sağlanan ve alanları varsayılan değerlerine başlatılan tüm Kurucular yok.

public class Person
{
    public int age;
    public string name;
}

class TestPerson
{
    static void Main()
    {
        Person person = new Person();

        Console.WriteLine("Name: {0}, Age: {1}", person.name, person.age);
        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output:  Name: , Age: 0

Dikkat varsayılan değeri age olan 0 ve varsayılan değer olan name olan null.Varsayılan değerler hakkında daha fazla bilgi için bkz: Varsayılan değerler tablosu (C# Reference).

Örnek 3

Temel Sınıf başlatıcısı kullanarak aşağıdaki örnekte gösterilmiştir.Circle Sınıf genel sınıftan türetilmiş Shapeve Cylinder Sınıf türetilmiş Circle sınıfı.Türetilmiş her sınıf oluşturucu, temel sınıf Başlatıcısı kullanıyor.

abstract class Shape
{
    public const double pi = Math.PI;
    protected double x, y;

    public Shape(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    public abstract double Area();
}

class Circle : Shape
{
    public Circle(double radius)
        : base(radius, 0)
    {
    }
    public override double Area()
    {
        return pi * x * x;
    }
}

class Cylinder : Circle
{
    public Cylinder(double radius, double height)
        : base(radius)
    {
        y = height;
    }

    public override double Area()
    {
        return (2 * base.Area()) + (2 * pi * x * y);
    }
}

class TestShapes
{
    static void Main()
    {
        double radius = 2.5;
        double height = 3.0;

        Circle ring = new Circle(radius);
        Cylinder tube = new Cylinder(radius, height);

        Console.WriteLine("Area of the circle = {0:F2}", ring.Area());
        Console.WriteLine("Area of the cylinder = {0:F2}", tube.Area());

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
/* Output:
    Area of the circle = 19.63
    Area of the cylinder = 86.39
*/

Temel sınıf Kurucularını Çağırmak daha fazla örnek için bkz: Sanal (C# Reference), geçersiz kılma (C# Reference), ve Bankası (C# Reference).

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)

Statik (C# Reference)

Kavramlar

C# Programlama Kılavuzu