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.
Anahtar protected internal sözcük bileşimi bir üye erişim değiştiricidir. Korumalı bir iç üyeye geçerli derlemeden veya içeren sınıftan türetilen türlerden erişebilirsiniz. Diğer erişim değiştiricileriyle karşılaştırması protected internal için bkz . Erişilebilirlik Düzeyleri.
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.
İçeren derleme içindeki herhangi bir tür, bir temel sınıfın korumalı iç üyesine erişebilir. Başka bir derlemede bulunan türetilmiş bir sınıf, üyeye yalnızca erişim türetilmiş sınıf türünün bir değişkeni aracılığıyla gerçekleşirse erişebilir. Örneğin, aşağıdaki kod kesimini göz önünde bulundurun:
// Assembly1.cs
// Compile with: /target:library
public class BaseClass
{
protected internal int myValue = 0;
}
class TestAccess
{
void Access()
{
var baseObject = new BaseClass();
baseObject.myValue = 5;
}
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClass : BaseClass
{
static void Main()
{
var baseObject = new BaseClass();
var derivedObject = new DerivedClass();
// Error CS1540, because myValue can only be accessed by
// classes derived from BaseClass.
// baseObject.myValue = 10;
// OK, because this class derives from BaseClass.
derivedObject.myValue = 10;
}
}
Bu örnek, Assembly1.cs ve Assembly2.cs adlı iki dosya içerir.
İlk dosya bir ortak temel sınıf içerir, BaseClassve başka bir sınıf, TestAccess.
BaseClass aynı myValuederlemede oldukları için türün TestAccess eriştiği korumalı bir iç üyeye sahip olur.
İkinci dosyada, bir örneği BaseClass üzerinden erişim myValue girişimi bir hata oluştururken, türetilmiş bir sınıfın DerivedClass örneği aracılığıyla bu üyeye erişim başarılı olur. Bu erişim kuralı, aynı derlemedeki herhangi bir sınıftan veya herhangi bir derlemedekitüretilmiş sınıflardan erişime izin vererek korunan erişim değiştiricilerinin en uygun olduğunu gösterirprotected internal.
Yapı üyeleri protected internal yapı devralınamadığı için olamaz.
Korumalı iç üyeleri geçersiz kılma
Bir sanal üyeyi geçersiz kıldığınızda, geçersiz kılınan yöntemin erişilebilirlik değiştiricisi türetilmiş sınıfı tanımladığınız derlemeye bağlıdır.
Türetilmiş sınıfı temel sınıfla aynı derlemede tanımladığınızda, geçersiz kılınan tüm üyelerin erişimi olur protected internal . Türetilmiş sınıfı temel sınıftan farklı bir derlemede tanımlarsanız geçersiz kılınan üyelerin erişimi olur protected .
// Assembly1.cs
// Compile with: /target:library
public class BaseClass
{
protected internal virtual int GetExampleValue()
{
return 5;
}
}
public class DerivedClassSameAssembly : BaseClass
{
// Override to return a different example value, accessibility modifiers remain the same.
protected internal override int GetExampleValue()
{
return 9;
}
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClassDifferentAssembly : BaseClass
{
// Override to return a different example value, since this override
// method is defined in another assembly, the accessibility modifiers
// are only protected, instead of protected internal.
protected override int GetExampleValue()
{
return 2;
}
}
C# dil belirtimi
Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.