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.
Değiştiriciyi sealed bir sınıfa uyguladığınızda, 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 yaklaşımı kullanarak geliştiricilerin sınıfınızdan sınıf türetmesini sağlarken belirli sanal yöntemleri veya özellikleri geçersiz kılmalarını engellersiniz.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
Aşağıdaki örnekte, Z öğesinden Y devralır ancak Z içinde X bildirilen ve korumalı Ysanal işlevi F geçersiz kılamaz.
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 üyeyi geçersiz kıldığınızda, aşağıdaki örnekte gösterildiği gibi anahtar sözcüğünü sealed kullanarak türetme türlerinin bunu geçersiz kılmasını engelleyebilirsiniz:
public sealed override string ToString() => Value;
Soyut bir sınıfın soyut yöntemlerin veya özelliklerin bir uygulaması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.
Değiştiriciyi sealed bir yönteme veya özelliğe uyguladığınızda, her zaman geçersiz kılma ile kullanın.
Yapılar örtük olarak korumalı olduğundan, onlardan devralamazsınız.
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'
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 bulundurun:
- Sınıf türetmenin, sınıfınızı özelleştirme özelliğiyle elde edebileceğiniz olası avantajlar.
- Sınıfların türetilmesi, sınıflarınızı artık düzgün veya beklendiği gibi çalışmadıkları şekilde değiştirebilir.
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.