chroniona wewnętrznieC# (odwołanie)protected internal (C# Reference)

Kombinacja słowa kluczowego protected internal jest modyfikatorem dostępu składowej.The protected internal keyword combination is a member access modifier. Chroniony wewnętrzny element członkowski jest dostępny z bieżącego zestawu lub z typów, które pochodzą od klasy zawierającej.A protected internal member is accessible from the current assembly or from types that are derived from the containing class. Aby uzyskać porównanie protected internal z innymi modyfikatorami dostępu, zobacz poziomy dostępności.For a comparison of protected internal with the other access modifiers, see Accessibility Levels.

PrzykładExample

Chroniona wewnętrzna składowa klasy bazowej jest dostępna z dowolnego typu w obrębie zawierającego go zestawu.A protected internal member of a base class is accessible from any type within its containing assembly. Jest ona również dostępna w klasie pochodnej znajdującej się w innym zestawie tylko wtedy, gdy dostęp odbywa się za pomocą zmiennej typu klasy pochodnej.It is also accessible in a derived class located in another assembly only if the access occurs through a variable of the derived class type. Rozważmy na przykład następujący segment kodu:For example, consider the following code segment:

// Assembly1.cs
// Compile with: /target:library
public class BaseClass
{
   protected internal int myValue = 0;
}

class TestAccess
{
    void Access()
    {
        var baseObject = new BaseClass();
        baseObject.myValue = 5;
    }
}
// Assembly2.cs
// Compile with: /reference:Assembly1.dll
class DerivedClass : BaseClass
{
    static void Main()
    {
        var baseObject = new BaseClass();
        var derivedObject = new DerivedClass();

        // Error CS1540, because myValue can only be accessed by
        // classes derived from BaseClass.
        // baseObject.myValue = 10;

        // OK, because this class derives from BaseClass.
        derivedObject.myValue = 10;
    }
}

Ten przykład zawiera dwa pliki, Assembly1.cs i Assembly2.cs.This example contains two files, Assembly1.cs and Assembly2.cs. Pierwszy plik zawiera publiczną klasę bazową, BaseClassi inną klasę, TestAccess.The first file contains a public base class, BaseClass, and another class, TestAccess. BaseClass jest właścicielem chronionego wewnętrznego elementu członkowskiego, myValue, do którego jest uzyskiwany dostęp za pomocą typu TestAccess.BaseClass owns a protected internal member, myValue, which is accessed by the TestAccess type. W drugim pliku próba uzyskania dostępu do myValue za pomocą wystąpienia BaseClass spowoduje wystąpienie błędu, podczas gdy dostęp do tego elementu członkowskiego odbywa się za pomocą wystąpienia klasy pochodnej, DerivedClass powiedzie się.In the second file, an attempt to access myValue through an instance of BaseClass will produce an error, while an access to this member through an instance of a derived class, DerivedClass will succeed.

Elementy członkowskie struktury nie mogą być protected internal, ponieważ struktura nie może być dziedziczona.Struct members cannot be protected internal because the struct cannot be inherited.

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#.For more information, see the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also