Sınıflara giriş

Başvuru türleri

Olarak tanımlanan bir tür class , başvuru türüdür. Çalışma zamanında, bir başvuru türü değişkeni bildirdiğinizde, null işlecini kullanarak sınıfın bir örneğini açıkça oluşturana new veya onu aşağıdaki örnekte gösterildiği gibi başka bir yerde oluşturulmuş bir tür nesnesi atayarak değişken değeri içerir:

//Declaring an object of type MyClass.
MyClass mc = new MyClass();

//Declaring another object of the same type, assigning it the value of the first object.
MyClass mc2 = mc;

Nesne oluşturulduğunda, söz konusu nesne için yönetilen yığında yeterli bellek ayrılır ve değişken yalnızca belirtilen nesnenin konumuna bir başvuru içerir. Yönetilen yığında bulunan türler, her ikisi de ayrıldıklarında ve çöp toplama olarak bilinen clr 'nin otomatik bellek yönetimi işlevselliği tarafından geri kazanıyorsa ek yük gerektirir. Ancak çöp toplama da yüksek oranda iyileştirilmiştir ve çoğu senaryoda bir performans sorunu oluşturmaz. Çöp toplama hakkında daha fazla bilgi için bkz. Otomatik bellek yönetimi ve çöp toplama.

Sınıfları Bildirme

Sınıflar, class Aşağıdaki örnekte gösterildiği gibi, anahtar sözcüğü ve ardından benzersiz bir tanımlayıcı kullanılarak bildirilenler:

//[access modifier] - [class] - [identifier]
public class Customer
{
   // Fields, properties, methods and events go here...
}

classAnahtar sözcüğü öncesinde erişim düzeyidir. publicBu durumda kullanıldığı için, herkes bu sınıfın örneklerini oluşturabilir. Sınıfın adı class anahtar sözcüğünü izler. Sınıfın adı geçerli bir C# tanımlayıcı adıolmalıdır. Tanımın geri kalanı, davranışın ve verilerin tanımlandığı sınıf gövdesidir. Bir sınıftaki alanlar, özellikler, Yöntemler ve olaylar topluca sınıf üyeleri olarak adlandırılır.

Nesneler oluşturma

Bazen birbirinin yerine kullanıldıkları halde bir sınıf ve bir nesne farklı şeylerdir. Bir sınıf nesne türünü tanımlar, ancak nesnenin kendisi değildir. Bir nesne, bir sınıfı temel alan somut bir varlıktır ve bazen bir sınıfın örneği olarak adlandırılır.

Nesneler, new anahtar sözcüğü kullanılarak, ardından nesnenin temel aldığı sınıfın adı tarafından oluşturulabilir ve şöyle olur:

Customer object1 = new Customer();

Bir sınıfın bir örneği oluşturulduğunda, nesnesine bir başvuru, programcıya geri geçirilir. Önceki örnekte, object1 temel alan bir nesnesine başvurudur Customer . Bu başvuru yeni nesneye başvurur ancak nesne verilerinin kendisini içermez. Aslında, herhangi bir nesne oluşturmadan bir nesne başvurusu oluşturabilirsiniz:

 Customer object2;

Bir nesneye başvurmayan önceki gibi nesne başvurularının oluşturulması önerilmez çünkü bu tür bir başvuruya erişim denemesi çalışma zamanında başarısız olur. Bununla birlikte, bu tür bir başvuru, yeni bir nesne oluşturarak ya da bunun gibi var olan bir nesne atanarak bir nesneye başvurmak için kullanılabilir:

Customer object3 = new Customer();
Customer object4 = object3;

Bu kod, her ikisi de aynı nesneye başvuran iki nesne başvurusu oluşturur. Bu nedenle, nesne üzerinde yapılan tüm değişiklikler object3 sonraki kullanımlarda yansıtılır object4 . Sınıfları temel alan nesneler başvuruya göre başvurulduğu için sınıflar başvuru türleri olarak bilinir.

Sınıf devralma

Sınıflar, nesne odaklı programlamanın temel bir özelliği olan devralmayı tamamen destekler. Bir sınıf oluşturduğunuzda, olarak tanımlanmayan diğer bir sınıftan kalıtımla alabilir sealed ve diğer sınıflar sınıfınızdan kalıtımla alabilir ve sınıf sanal yöntemlerini geçersiz kılabilir. Ayrıca, bir veya daha fazla arabirim de uygulayabilirsiniz.

Devralma bir türetme kullanılarak gerçekleştirilir. Bu, bir sınıfın veri ve davranış devraldığı temel sınıf kullanılarak bildirildiği anlamına gelir. Bir temel sınıf, bir iki nokta üst üste eklenerek ve türetilmiş sınıf adından sonra temel sınıfın adı aşağıdaki gibi olarak belirtilir:

public class Manager : Employee
{
    // Employee fields, properties, methods and events are inherited
    // New Manager fields, properties, methods and events go here...
}

Bir sınıf bir temel sınıf bildiriyorsa, oluşturucular hariç, taban sınıfın tüm üyelerini devralır. Daha fazla bilgi için bkz. Devralma.

C# içindeki bir sınıf, yalnızca bir temel sınıftan doğrudan devralınabilir. Ancak, bir temel sınıfın kendisi başka bir sınıftan devraldığı için, bir sınıf dolaylı olarak birden fazla temel sınıfı devralınabilir. Ayrıca, bir sınıf doğrudan bir veya daha fazla arabirim uygulayabilir. Daha fazla bilgi için bkz. arabirimler.

Bir sınıf bildirilebilecek abstract . Soyut bir sınıf imza tanımına sahip ancak uygulamaya sahip olmayan soyut yöntemler içerir. Soyut sınıfların örneği oluşturulamıyor. Yalnızca soyut yöntemleri uygulayan türetilmiş sınıflar aracılığıyla kullanılabilir. Buna karşılık, korumalı bir sınıf diğer sınıfların bundan türemesine izin vermez. Daha fazla bilgi için bkz. soyut ve korumalı sınıflar ve sınıf üyeleri.

Sınıf tanımları, farklı kaynak dosyalar arasında bölünebilir. Daha fazla bilgi için bkz. kısmi sınıflar ve Yöntemler.

Örnek

Aşağıdaki örnek, bir Otomatik uygulanan özellik, bir yöntem ve Oluşturucu olarak adlandırılan özel bir yöntem içeren bir ortak sınıf tanımlar. Daha fazla bilgi için bkz. Özellikler, Yöntemlerve oluşturucular makaleleri. Daha sonra sınıfının örnekleri new anahtar sözcüğüyle oluşturulur.

using System;

public class Person
{
    // Constructor that takes no arguments:
    public Person()
    {
        Name = "unknown";
    }

    // Constructor that takes one argument:
    public Person(string name)
    {
        Name = name;
    }

    // Auto-implemented readonly property:
    public string Name { get; }

    // Method that overrides the base class (System.Object) implementation.
    public override string ToString()
    {
        return Name;
    }
}
class TestPerson
{
    static void Main()
    {
        // Call the constructor that has no parameters.
        var person1 = new Person();
        Console.WriteLine(person1.Name);

        // Call the constructor that has one parameter.
        var person2 = new Person("Sarah Jones");
        Console.WriteLine(person2.Name);
        // Get the string representation of the person2 instance.
        Console.WriteLine(person2);
    }
}
// Output:
// unknown
// Sarah Jones
// Sarah Jones

C# Dil Belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.