Private, protected (C#-Referenz)private protected (C# Reference)

Die private protected schlüsselwortkombination wird der Zugriffsmodifizierer für einen Member.The private protected keyword combination is a member access modifier. Private geschützte Mitglied wird von Typen abgeleitet von der enthaltenden Klasse jedoch nur innerhalb der enthaltenden Assembly zugegriffen werden kann.A private protected member is accessible by types derived from the containing class, but only within its containing assembly. Einen Vergleich von private protected mit den anderen Zugriffsmodifizierern finden Sie unter Zugriffsebenen.For a comparison of private protected with the other access modifiers, see Accessibility Levels.

BeispielExample

Ein privater, geschützter Member einer Basisklasse wird von abgeleiteten Typen in der enthaltenden Assembly zugegriffen werden kann, nur, wenn Sie der statische Typ der Variablen der abgeleiteten Klassentyp ist.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. Sehen Sie sich z.B. folgenden Codeabschnitt an: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()
    {
        BaseClass 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;
     }
 }

Dieses Beispiel enthält zwei Dateien, Assembly1.cs und Assembly2.cs.This example contains two files, Assembly1.cs and Assembly2.cs. Die erste Datei enthält eine öffentliche Basisklasse BaseClass, und einen Typ abgeleitet wurde, DerivedClass1.The first file contains a public base class, BaseClass, and a type derived from it, DerivedClass1. BaseClassbesitzt einen privaten geschützten Member myValue, welche DerivedClass1 versucht, auf zwei Arten zugreifen.BaseClass owns a private protected member, myValue, which DerivedClass1 tries to access in two ways. Der erste Versuch, den Zugriff auf myValue durch eine Instanz von BaseClass , löst einen Fehler.The first attempt to access myValue through an instance of BaseClass will produce an error. Allerdings der Versuch, ihn als einen geerbten Member in verwenden DerivedClass1 wird erfolgreich ausgeführt.However, the attempt to use it as an inherited member in DerivedClass1 will succeed. In der zweiten Datei, einem versuchten Zugriff auf myValue als einen geerbten Member von DerivedClass2 , löst einen Fehler, da nur von abgeleiteten Typen in Assembly1 möglich ist.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.

Strukturmember nicht private protected , da die Struktur nicht geerbt werden kann.Struct members cannot be private protected because the struct cannot be inherited.

C#-ProgrammiersprachenspezifikationC# Language Specification

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auchSee Also

C#-Referenz C# Reference
C#-Programmierhandbuch C# Programming Guide
C#-Schlüsselwörter C# Keywords
Zugriffsmodifizierer Access Modifiers
Zugriffsebenen Accessibility Levels
Modifizierer Modifiers
Public public
private private
internal internal
Sicherheitsaspekte für interne virtuelle SchlüsselwörterSecurity concerns for internal virtual keywords