Aracılığıyla paylaş


private protected (C# Başvurusu)

Anahtar private protected sözcük bileşimi bir üye erişim değiştiricidir. sınıfından türetilen ve içeren derlemede bildirilen türler özel korumalı üyeye erişebilir. Diğer erişim değiştiricileriyle karşılaştırması private protected 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.

Türetilmiş türler, yalnızca değişkenin statik türü türetilmiş sınıf türüyse, içeren derlemesinde bir temel sınıfın özel korumalı üyesine erişebilir. Örneğin, aşağıdaki kod kesimini göz önünde bulundurun:

// Assembly1.cs
// Compile with: /target:library
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, Assembly1.cs ve Assembly2.cs adlı iki dosya içerir. İlk dosya, genel bir temel sınıfı BaseClass ve ondan türetilmiş bir tür DerivedClass1 içerir. BaseClass, aynı derleme içinde miras alınan üye olarak erişilebilen özel korumalı bir myValue üyesine sahiptir.

İkinci dosyada, üyelerin yalnızca aynı derleme içindeki türetilmiş türler tarafından erişilebilir olması nedeniyleprivate protected, devralınan üyesi DerivedClass2 olarak erişim myValue girişimi bir hata oluşturur. Bu kısıtlama, (herhangi bir derlemedeki türetilmiş sınıflardan erişime izin veren) ile protected internal (aynı derlemedeki herhangi bir sınıftan veya herhangi bir derlemedeki türetilmiş sınıflardan erişime izin veren) arasındaki temel farktır protected .

adlı bir öğe içeriyorsaAssembly1.cs, türetilen sınıfın DerivedClass2 içinde BaseClassbildirilen üyelere private protected erişimi vardır.InternalsVisibleToAttributeAssembly2 InternalsVisibleTo diğer derlemelerdeki türetilmiş sınıflar için private protected üyelerini görünür hale getirir.

Diğer korumalı erişim değiştiricileriyle karşılaştırma

Aşağıdaki tabloda, üç korumalı erişim değiştiricisi arasındaki temel farklar özetlemektedir:

Erişim Değiştiricisi Aynı Derleme, Türetilmiş Sınıf Aynı Derleme, Türetilmemiş Sınıf Farklı Derleme, Türetilmiş Sınıf
protected ✔️ ✔️
protected internal ✔️ ✔️ ✔️
private protected ✔️
  • Herhangi bir derlemedeki türetilmiş sınıfların üyeye erişmesini istediğinizde kullanın protected .
  • En izinli erişimi (herhangi bir yerde aynı derlemedeki veya türetilmiş sınıflardaki herhangi bir sınıf) istediğinizde kullanın protected internal .
  • En kısıtlayıcı korumalı erişimi istediğinizde kullanın private protected (yalnızca aynı derlemedeki türetilmiş sınıflar).

Yapılar devralınamadığı için yapı üyelerini bildiremezsiniz private protected .

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.

Ayrıca bakınız