Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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, Asınıfından devralır, ancak hiçbir sınıf Bsınıfından devralınamaz.
class A {}
sealed class B : A {}
sealed değiştiricisini, 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, ZY'den devralır, ancak Z, F'te olarak bildirilen ve X'te korumalı olan sanal işlev Y'ü aşamaz.
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 sanalolarak bildirmeyerek bunları geçersiz kılmasını engelleyebilirsiniz.
Temel türde bildirilen bir virtual üyesini geçersiz kıldığınızda, türetilen türlerin onları geçersiz kılmasını önlemek için aşağıdaki örnekte olduğu gibi sealed anahtar sözcüğünü kullanabilirsiniz.
public sealed override string ToString() => Value;
Soyut sınıfın soyut yöntemlerin veya özelliklerin bir uygulamasını sağlayan bir sınıf tarafından devralınması gerektiğinden, korumalı bir sınıfla soyut değiştiricisinin kullanılması hatadır.
Bir yönteme veya özelliğe uygulandığında, sealed değiştirici her zaman geçersiz kılma ile kullanılmalıdır.
Yapılar otomatik olarak mühürlü 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.
Sınıflarınızı beklendiği gibi veya düzgün çalışmayacak şekilde değiştirme potansiyeline sahip türetilmiş sınıfların olasılığı.
C# dil belirtimi
Daha fazla bilgi için bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.