sealed (C# Başvurusu)sealed (C# Reference)

Bir sınıfa uygulandığında sealed değiştiricisi kullananların devralmasını diğer sınıflar engeller.When applied to a class, the sealed modifier prevents other classes from inheriting from it. Aşağıdaki örnekte, sınıf B sınıfından devralan A, ancak hiçbir sınıf sınıfı devralabilirsiniz B.In the following example, class B inherits from class A, but no class can inherit from class B.

class A {}
sealed class B : A {}

Ayrıca sealed bir yöntem veya sanal bir yöntemi geçersiz kılan özellik veya bir temel sınıf özelliği değiştiricisi.You can also use the sealed modifier on a method or property that overrides a virtual method or property in a base class. Bu izin, sınıfından türetilir ve bunları belirli sanal yöntemleri veya özellikleri geçersiz kılmasını önlemek için sınıflar sağlar.This enables you to allow classes to derive from your class and prevent them from overriding specific virtual methods or properties.

ÖrnekExample

Aşağıdaki örnekte, Z devraldığı Y ancak Z sanal işlevini geçersiz kılamaz F dosyasında bildirilen X hem de korumalı Y.In the following example, Z inherits from Y but Z cannot override the virtual function F that is declared in X and sealed in Y.

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öntemleri veya özellikleri tanımladığınızda, türetilen sınıflar olarak bildirerek değil önlemiş engelleyebilir sanal.When you define new methods or properties in a class, you can prevent deriving classes from overriding them by not declaring them as virtual.

Kullanılacak bir hata olduğunu soyut değiştiricisi kapalı bir sınıf ile soyut bir sınıf soyut yöntemleri veya özellikleri uygulaması sağlayan bir sınıf tarafından devralınan gerekir çünkü.It is an error to use the abstract modifier with a sealed class, because an abstract class must be inherited by a class that provides an implementation of the abstract methods or properties.

Bir yöntemi veya özelliği uygulandığında sealed değiştiricisi her zaman kullanılması gerektiğini ile geçersiz kılma.When applied to a method or property, the sealed modifier must always be used with override.

Yapılardan türetme çünkü bunlar devralınamaz.Because structs are implicitly sealed, they cannot be inherited.

Daha fazla bilgi için devralma.For more information, see Inheritance.

Daha fazla örnek için bkz. soyut ve korumalı sınıflar ve sınıf üyeleri.For more examples, see Abstract and Sealed Classes and Class Members.

ÖrnekExample

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ıfından devralmak deneyebilirsiniz:In the previous example, you might try to inherit from the sealed class by using the following statement:

class MyDerivedC: SealedClass {} // Error

Sonucu bir hata iletisi oluşturulur.The result is an error message:

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

AçıklamalarRemarks

Bir sınıf, yöntem veya özellik mühürlenecek belirlemek için genellikle iki aşağıdaki noktaları dikkate almanız gerekir:To determine whether to seal a class, method, or property, you should generally consider the following two points:

  • Olası faydaları sınıflardan türetme sınıfınıza özelleştirme olanağı elde edebilir.The potential benefits that deriving classes might gain through the ability to customize your class.

  • Olası sınıflardan türetme gibi sınıflarınızdaki değiştirebilir, bunlar artık doğru şekilde çalışması veya olarak bir yöntem bekleniyor.The potential that deriving classes could modify your classes in such a way that they would no longer work correctly or as expected.

C# dili belirtimiC# language specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also