protected (Riferimenti per C#)protected (C# Reference)

La parola chiave protected è un modificatore di accesso ai membri.The protected keyword is a member access modifier.

Questa pagina illustra l'accesso protected.This page covers protected access. La parola chiave protected fa anche parte dei modificatori di accesso protected internal e private protected.The protected keyword is also part of the protected internal and private protected access modifiers.

Un membro protetto è accessibile all'interno della classe di appartenenza e dalle istanze della classe derivata.A protected member is accessible within its class and by derived class instances.

Per un confronto di protected con altri modificatori di accesso, vedere Livelli di accessibilità.For a comparison of protected with the other access modifiers, see Accessibility Levels.

EsempioExample

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.A protected member of a base class is accessible in a derived class only if the access occurs through the derived class type. Si consideri il segmento di codice di esempio seguente:For example, consider the following code segment:

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.The statement a.x = 10 generates an error because it is made within the static method Main, and not an instance of class B.

I membri struct non possono essere protetti perché struct non può essere ereditato.Struct members cannot be protected because the struct cannot be inherited.

EsempioExample

In questo esempio la classe DerivedPoint è derivata da Point.In this example, the class DerivedPoint is derived from Point. Pertanto, è possibile accedere i membri protetti della classe di base direttamente dalla classe derivata.Therefore, you can access the protected members of the base class directly from the derived class.

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 privato, il compilatore genererà i messaggi di errore seguenti:If you change the access levels of x and y to private, the compiler will issue the error messages:

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

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

Specifiche del linguaggio C#C# language specification

Per altre informazioni, vedere Accessibilità dichiarata in Specifica del linguaggio C#.For more information, see Declared accessibility in the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also