private protected (C# Başvurusu)private protected (C# Reference)

private protected Anahtar sözcüğü bir üye erişim değiştiricisi oluşur.The private protected keyword combination is a member access modifier. Özel bir korumalı üye, kapsayan sınıfı ancak kendi içeren bütünleştirilmiş kod içinde yalnızca türetilen türler tarafından erişilebilir.A private protected member is accessible by types derived from the containing class, but only within its containing assembly. Bir karşılaştırması private protected diğer erişim değiştiricileri ile bkz erişilebilirlik düzeyleri.For a comparison of private protected with the other access modifiers, see Accessibility Levels.

Not

private protected Erişim değiştiricisi geçerli sürümde C# 7.2 ve üzeri.The private protected access modifier is valid in C# version 7.2 and later.

ÖrnekExample

Yalnızca statik değişken türü türetilmiş sınıf türü ise bir taban sınıfın özel ve korumalı bir üye türetilen türler, içeren derlemede erişilebilir.A private protected member of a base class is accessible from derived types in its containing assembly only if the static type of the variable is the derived class type. Örneğin, aşağıdaki kod kesimi göz önünde bulundurun:For example, consider the following code segment:

// 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 iki dosyayı içeren Assembly1.cs ve Assembly2.cs.This example contains two files, Assembly1.cs and Assembly2.cs. İlk dosyayı içeren genel bir temel sınıf BaseClassve bu türden türetilmiş tür DerivedClass1.The first file contains a public base class, BaseClass, and a type derived from it, DerivedClass1. BaseClass özel bir korumalı üye sahibi myValue, hangi DerivedClass1 iki yolla erişmeyi dener.BaseClass owns a private protected member, myValue, which DerivedClass1 tries to access in two ways. Erişmek için yapılan ilk girişim myValue örneği üzerinden BaseClass hataya neden olur.The first attempt to access myValue through an instance of BaseClass will produce an error. Ancak, devralınan bir üyesi olarak kullanma girişimi DerivedClass1 başarılı olur.However, the attempt to use it as an inherited member in DerivedClass1 will succeed. İkinci dosyasında, erişme denemesi myValue devralınan bir üyesi olarak DerivedClass2 yalnızca Assembly1 türetilmiş türleri tarafından erişilebilir olduğundan bir hata üretecektir.In the second file, an attempt to access myValue as an inherited member of DerivedClass2 will produce an error, as it is only accessible by derived types in Assembly1.

Yapı üyeleri olamaz private protected struct devraldığından.Struct members cannot be private protected because the struct cannot be inherited.

C# dili belirtimiC# language specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also