sealed (C# Başvurusu)

Bir sınıfa uygulandığında sealed , değiştirici diğer sınıfların bu sınıftan devralmasını engeller. Aşağıdaki örnekte, sınıfı B sınıfından Adevralır, ancak hiçbir sınıf sınıfından Bdevralamaz.

class A {}
sealed class B : A {}

Değiştiriciyi sealed , temel sınıftaki bir sanal yöntemi veya özelliği geçersiz kılan bir yöntemde veya özellikte de kullanabilirsiniz. Bu, sınıfların sınıfınızdan türetilmesine izin vermenizi ve belirli sanal yöntemleri veya özellikleri geçersiz kılmalarını engellemenizi sağlar.

Örnek

Aşağıdaki örnekte öğesinden devralınır ancak Z içinde X bildirilen ve korumalı Ysanal işlevi F geçersiz kılamaz. ZY

class X
{
    protected virtual void F() { Console.WriteLine("X.F"); }
    protected virtual void F2() { Console.WriteLine("X.F2"); }
}

class Y : X
{
    sealed protected override void F() { Console.WriteLine("Y.F"); }
    protected override void F2() { Console.WriteLine("Y.F2"); }
}

class Z : Y
{
    // Attempting to override F causes compiler error CS0239.
    // protected override void F() { Console.WriteLine("Z.F"); }

    // Overriding F2 is allowed.
    protected override void F2() { Console.WriteLine("Z.F2"); }
}

Bir sınıfta yeni yöntemler veya özellikler tanımladığınızda, türetilen sınıfların sanal olarak bildirmeyerek bunları geçersiz kılmasını engelleyebilirsiniz.

Soyut bir sınıfın soyut yöntemlerin veya özelliklerin uygulanmasını sağlayan bir sınıf tarafından devralınması gerektiğinden, soyut değiştiriciyi korumalı bir sınıfla kullanmak bir hatadır.

Bir yönteme veya özelliğe uygulandığındasealed, değiştirici her zaman geçersiz kılma ile kullanılmalıdır.

Yapılar örtük olarak korumalı olduğundan devralınamaz.

Daha fazla bilgi için bkz . Devralma.

Daha fazla örnek için bkz . Soyut ve Korumalı Sınıflar ve Sınıf Üyeleri.

sealed class SealedClass
{
    public int x;
    public int y;
}

class SealedTest2
{
    static void Main()
    {
        var sc = new SealedClass();
        sc.x = 110;
        sc.y = 150;
        Console.WriteLine($"x = {sc.x}, y = {sc.y}");
    }
}
// Output: x = 110, y = 150

Önceki örnekte, aşağıdaki deyimi kullanarak korumalı sınıftan devralmayı deneyebilirsiniz:

class MyDerivedC: SealedClass {} // Error

Sonuç bir hata iletisidir:

'MyDerivedC': cannot derive from sealed type 'SealedClass'

Açıklamalar

Bir sınıfın, yöntemin veya özelliğin mühürlenip mühürlenmeyeceğini belirlemek için genellikle aşağıdaki iki noktayı göz önünde bulundurmanız gerekir:

  • Sınıf türetmenin, sınıfınızı özelleştirme özelliğiyle elde edebileceğiniz olası avantajlar.

  • Türetilen sınıfların sınıflarınızı artık düzgün veya beklendiği gibi çalışmayabilecek şekilde değiştirme olasılığı.

C# dili 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.

Ayrıca bkz.