Dela via


skyddad (C#-referens)

Nyckelordet protected är en medlemsåtkomstmodifierare.

Kommentar

Den här sidan beskriver protected åtkomst. Nyckelordet protected är också en del av protected internal och private protected åtkomstmodifierare.

En skyddad medlem är tillgänglig i klassen och av härledda klassinstanser.

En jämförelse av protected med de andra åtkomstmodifierarna finns i Hjälpmedelsnivåer.

Exempel 1

En skyddad medlem i en basklass är endast tillgänglig i en härledd klass om åtkomsten sker via den härledda klasstypen. Tänk till exempel på följande kodsegment:

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

a.x = 10 Instruktionen genererar ett fel eftersom det görs inom den statiska metoden Main och inte en instans av klass B.

Struct-medlemmar kan inte skyddas eftersom structen inte kan ärvas.

Exempel 2

I det här exemplet härleds klassen DerivedPoint från Point. Därför kan du komma åt de skyddade medlemmarna i basklassen direkt från den härledda klassen.

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

Om du ändrar åtkomstnivåerna x för och y till privat utfärdar kompilatorn felmeddelandena:

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

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

Språkspecifikation för C#

Mer information finns i Deklarerad tillgänglighet i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även