private protected (C# Başvurusu)

Anahtar private protected sözcük birleşimi bir üye erişimi değiştiricidir. Özel korumalı üyeye, içeren sınıftan türetilen türler tarafından erişilebilir, ancak yalnızca kendi içeren derlemesi içinde yer alan. diğer erişim private protected değiştiricileriyle karşılaştırması için bkz. Erişilebilirlik Düzeyleri.

Not

Erişim private protected 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ü ise, içeren derlemesinde türetilmiş türlerden erişilebilir. Örneğin, aşağıdaki kod kesimini düşünün:

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 örnek, ve olmak için iki dosya Assembly1.cs Assembly2.cs içerir. İlk dosya, genel bir temel sınıf, BaseClass ve bundan türetilen bir türü DerivedClass1 içerir. BaseClass , iki şekilde erişmeye çalışan myValue özel DerivedClass1 korumalı bir üyeye sahip olur. bir örneği üzerinden myValue erişim ilk denemesi bir hata BaseClass üretir. Ancak, içinde devralınan bir üye olarak kullanma DerivedClass1 girişimi başarılı olur.

İkinci dosyada, devralınmış üyesi olarak erişim girişimi bir hata üretir çünkü yalnızca Assembly1'de türetilmiş myValue DerivedClass2 türler tarafından erişilebilir.

bu Assembly1.cs adı içeren bir InternalsVisibleToAttribute Assembly2 içeriyorsa, türetilmiş DerivedClass2 sınıf içinde bildirilen private protected üyelere erişimi BaseClass olur. InternalsVisibleTo , private protected üyeleri diğer derlemelerde türetilmiş sınıflar için görünür hale gelir.

Yapı üyeleri yapı private protected devralınamayandan 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.