C# Dersleri 70 - Sealed ve Sabit Tanımlama

C# Dersleri 70 - Sealed ve Sabit Tanımlama


C# Final ve Sabit Tanımlama (Constants)

C# dilinde sabit değerler ve değiştirilemez üyeler tanımlamak için const ve readonly anahtar sözcükleri kullanılır. Ayrıca, bir sınıf veya metodu devralınamaz hale getirmek için sealed anahtar sözcüğü kullanılır. Bu yazıda, sabit tanımlama yöntemlerini ve sealed sınıf/metot kullanımını inceleyeceğiz.

1. Sabit Değerler Tanımlama

Const (Sabitler)

const, sabit bir değeri temsil eder. Sabit bir değişkenin değeri derleme zamanında belirlenir ve sonradan değiştirilemez. Sabitler, genellikle uygulama genelinde değişmeyecek değerleri temsil eder (örneğin, matematiksel sabitler gibi).

Özellikler:

  • Yalnızca temel veri türleri (int, double, string, vb.) ile kullanılabilir.
  • Sabitler yalnızca bir kez atanabilir ve atandıktan sonra değiştirilemez.

Kullanım

class MathConstants
{
    public const double Pi = 3.14159; // Sabit tanımlama
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine($"Pi Değeri: {MathConstants.Pi}");
    }
}

Çıktı:

Pi Değeri: 3.14159

Readonly (Salt Okunur)

readonly anahtar sözcüğü, bir alanın yalnızca tanımlandığı yerde veya bir yapıcı (constructor) içinde başlatılabileceğini belirtir. readonly, çalışma zamanında değer atanabilen ancak sonradan değiştirilemeyen veriler için uygundur.

Özellikler:

  • Değer, yapıcı metotlarda dinamik olarak atanabilir.
  • Çalışma zamanında belirlenen sabit değerler için kullanılır.

Kullanım:

class Configuration
{
    public readonly string DatabaseConnection;

    // Constructor (yapıcı metot)
    public Configuration(string connection)
    {
        DatabaseConnection = connection;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Configuration config = new Configuration("Server=myServer;Database=myDB;");
        Console.WriteLine($"Veritabanı Bağlantısı: {config.DatabaseConnection}");
    }
}

Çıktı:

Veritabanı Bağlantısı: Server=myServer;Database=myDB;

Const ve Readonly Karşılaştırması

Özellik Const Readonly
Atama Zamanı Derleme Zamanı Çalışma Zamanı
Değiştirilebilirlik Atandıktan sonra değiştirilemez Yalnızca yapıcıda veya tanımlamada değiştirilebilir
Desteklenen Türler Sadece temel veri türleri Herhangi bir veri türü

2. Sealed Anahtar Sözcüğü

sealed anahtar sözcüğü, bir sınıfın başka bir sınıf tarafından devralınmasını (inheritance) veya bir metotun alt sınıflar tarafından geçersiz kılınmasını (override) engeller.

Sealed Sınıflar

Bir sınıfı sealed olarak tanımladığınızda, o sınıf başka bir sınıf tarafından türetilemez.

sealed class FinalClass
{
    public void DisplayMessage()
    {
        Console.WriteLine("Bu sınıf devralınamaz.");
    }
}

class Program
{
    static void Main(string[] args)
    {
        FinalClass obj = new FinalClass();
        obj.DisplayMessage();
    }
}

Hata:

class DerivedClass : FinalClass // HATA: FinalClass sealed olduğu için türetilemez
{
}

Sealed Metotlar

Sealed metotlar, bir sınıfın alt sınıfı tarafından geçersiz kılınmasını engeller. Bu metotlar yalnızca override anahtar sözcüğüyle tanımlanmış bir metotta kullanılabilir.

class BaseClass
{
    public virtual void ShowMessage()
    {
        Console.WriteLine("BaseClass: Mesaj Gösteriliyor.");
    }
}

class DerivedClass : BaseClass
{
    public sealed override void ShowMessage()
    {
        Console.WriteLine("DerivedClass: Mesaj Gösteriliyor.");
    }
}

// HATA: AnotherDerivedClass, ShowMessage metodunu geçersiz kılamaz
class AnotherDerivedClass : DerivedClass
{
    // public override void ShowMessage() // HATA
    // {
    // }
}

Sonuç

C#'da sabitler ve final yapıların kullanımı, güvenli ve değiştirilemez kod yazmak için önemli araçlardır. const, değişmeyen sabit değerler için kullanılırken, readonly, çalışma zamanında dinamik olarak atanabilir değerler için uygundur. Ayrıca, sealed anahtar sözcüğü, sınıfın veya metotların türetilmesini ve değiştirilmesini engelleyerek kodun kontrolünü sağlar.

Bu içeriği beğendiyseniz paylaşarak destek olabilirsiniz!


Eğitim İçeriği

Eğitim C# Dersleri
Kategori Programlama Dili
Ders Adeti 69 Ders
Dil Türkçe
Güncelleme 04/2024
  • HTML Dersleri

    HTML Dersleri Sıfırdan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 19 Ders
    Dil Türkçe
    Güncelleme 12/2020
    Derse Başla
  • Java Dersleri

    Java Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 125 Ders
    Dil Türkçe
    Güncelleme 09/2020
    Derse Başla
  • CSS Dersleri

    CSS Dersleri Başlangıçtan İleri Seviyeye

    Kategori Web Programlama
    Ders Süresi 49 Ders
    Dil Türkçe
    Güncelleme 10/2021
    Derse Başla
  • Java Örnek Projeler

    Java Örnek Projeler

    Kategori Programlama Dili
    Ders Süresi 20 Ders
    Dil Türkçe
    Güncelleme 10/2022
    Derse Başla
  • C# Dersleri

    C# Dersleri ve Nesne Yönelimli Programlama

    Kategori Programlama Dili
    Ders Süresi 100 Ders
    Dil Türkçe
    Güncelleme 04/2024
    Derse Başla