Megosztás a következőn keresztül:


privát védelem (C#-referencia)

A private protected kulcsszókombináció egy taghozzáférés-módosító. A privát védelem alatt álló tagok az adott osztályból származó típusok szerint érhetők el, de csak az azt tartalmazó szerelvényen belül. A többi hozzáférési módosítóval való összehasonlítást private protected lásd : Akadálymentességi szintek.

Feljegyzés

A private protected hozzáférés-módosító a C# 7.2-es és újabb verziójában érvényes.

Példa

Az alaposztály magánvédett tagja csak akkor érhető el származtatott típusokból a szerelvényben, ha a változó statikus típusa a származtatott osztálytípus. Vegyük például a következő kódszegmenst:

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;
    }
}

Ez a példa két fájlt Assembly1.cs és Assembly2.cs. Az első fájl egy nyilvános alaposztályt BaseClassés egy belőle DerivedClass1származtatott típust tartalmaz. BaseClass tulajdonosa egy privát védelem alatt álló tag, myValueamely DerivedClass1 kétféleképpen próbál hozzáférni. Az első kísérlet, amely egy példányon BaseClass keresztül próbál hozzáférnimyValue, hibát fog eredményezni. Azonban az öröklött tagként DerivedClass1 való használatra tett kísérlet sikeres lesz.

A második fájlban az öröklött tagként való hozzáférés myValue kísérlete DerivedClass2 hibát eredményez, mivel az csak a Assembly1 származtatott típusai számára érhető el.

Ha Assembly1.cs ilyen neveket Assembly2tartalmazInternalsVisibleToAttribute, a származtatott osztály DerivedClass2 hozzáféréssel rendelkezik a következőben BaseClassdeklarált tagokhozprivate protected: . InternalsVisibleTo láthatóvá teszi private protected a tagokat más szerelvények származtatott osztályai számára.

A szerkezet tagjai nem lehetnek private protected , mert a szerkezet nem örökölhető.

C# nyelvspecifikáció

További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még