Aracılığıyla paylaş


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.csadlı iki dosya Assembly1.cs bulunur. İlk dosya, genel bir temel sınıfını BaseClassve öğesinden DerivedClass1türetilmiş bir türü içerir. BaseClass, iki şekilde erişmeye çalışan özel korumalı bir üyeye myValueDerivedClass1 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.csInternalsVisibleToAttribute, türetilen sınıfın DerivedClass2 içinde BaseClassbildirilen üyelere private protectedAssembly2eriş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.

Ayrıca bkz.