protected (Riferimenti per C#)

La parola chiave protected è un modificatore di accesso ai membri.

Nota

Questa pagina illustra l'accesso protected. La parola chiave protected fa anche parte dei modificatori di accesso protected internal e private protected.

Un membro protetto è accessibile all'interno della classe di appartenenza e dalle istanze della classe derivata.

Per un confronto di protected con altri modificatori di accesso, vedere protected.

Esempio 1

Un membro protetto di una classe di base è accessibile in una classe derivata solo se viene eseguito l'accesso tramite il tipo di classe derivata. Si consideri il segmento di codice di esempio seguente:

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        var a = new A();
        var b = new B();

        // Error CS1540, because x can only be accessed by
        // classes derived from A.
        // a.x = 10;

        // OK, because this class derives from A.
        b.x = 10;
    }
}

L'istruzione a.x = 10 genera un errore perché usata all'interno del metodo statico Main e non in un'istanza della classe B.

I membri struct non possono essere protetti perché struct non può essere ereditato.

Esempio 2

In questo esempio la classe DerivedPoint è derivata da Point. Pertanto, è possibile accedere i membri protetti della classe di base direttamente dalla classe derivata.

class Point
{
    protected int x;
    protected int y;
}

class DerivedPoint: Point
{
    static void Main()
    {
        var dpoint = new DerivedPoint();

        // Direct access to protected members.
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine($"x = {dpoint.x}, y = {dpoint.y}");
    }
}
// Output: x = 10, y = 15

Se si impostano i livelli di accesso di x e y su x, il compilatore genererà i messaggi di errore seguenti:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

Specifiche del linguaggio C#

Per altre informazioni, vedere Accessibilità dichiarata in Specifica del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.

Vedi anche