private protected (C# Başvurusu)
Anahtar private protected
sözcük bileşimi bir üye erişim değiştiricidir. Özel korumalı üyeye, içeren sınıfından türetilen türler tarafından erişilebilir, ancak yalnızca kendi içeren derlemesi içinde. Diğer erişim değiştiricileriyle karşılaştırması private protected
için bkz . Erişilebilirlik Düzeyleri.
Not
private protected
Erişim değiştiricisi C# sürüm 7.2 ve sonraki sürümlerde geçerlidir.
Örnek
Bir temel sınıfın özel korumalı üyesine, yalnızca değişkenin statik türü türetilmiş sınıf türü olduğunda, içeren derlemedeki türetilmiş türlerden erişilebilir. Örneğin, aşağıdaki kod kesimini göz önünde bulundurun:
public class BaseClass
{
private protected int myValue = 0;
}
public class DerivedClass1 : BaseClass
{
void Access()
{
var baseObject = new BaseClass();
// Error CS1540, because myValue can only be accessed by
// classes derived from BaseClass.
// baseObject.myValue = 5;
// OK, accessed through the current derived class instance
myValue = 5;
}
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClass2 : BaseClass
{
void Access()
{
// Error CS0122, because myValue can only be
// accessed by types in Assembly1
// myValue = 10;
}
}
Bu örnekte ve Assembly2.cs
adlı iki dosya Assembly1.cs
bulunur.
İlk dosya, genel bir temel sınıfını BaseClass
ve öğesinden DerivedClass1
türetilmiş bir türü içerir. BaseClass
, iki şekilde erişmeye çalışan özel korumalı bir üyeye myValue
DerivedClass1
sahiptir. örneği üzerinden ilk erişim myValue
denemesi BaseClass
bir hataya neden olur. Ancak, bunu içinde devralınan bir üye DerivedClass1
olarak kullanma girişimi başarılı olur.
İkinci dosyada, devralınan üyesi DerivedClass2
olarak erişme myValue
girişimi, yalnızca Assembly1'deki türetilmiş türler tarafından erişilebildiği için bir hata oluşturur.
bu adlara sahipse Assembly1.cs
InternalsVisibleToAttribute, türetilen sınıfın DerivedClass2
içinde BaseClass
bildirilen üyelere private protected
Assembly2
erişimi olur. InternalsVisibleTo
üyeleri diğer derlemelerdeki türetilmiş sınıflar için görünür hale getirir private protected
.
Yapı üyeleri yapı private protected
devralınamadığı için olamaz.
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.