korumalı iç (C# Başvurusu)protected internal (C# Reference)

protected internalAnahtar sözcük birleşimi bir üye erişim değiştiricisidir.The protected internal keyword combination is a member access modifier. Korunan bir iç üyeye geçerli derlemeden veya kapsayan sınıftan türetilmiş türlerden erişilebilir.A protected internal member is accessible from the current assembly or from types that are derived from the containing class. protected internalDiğer erişim değiştiricilerine ilişkin bir karşılaştırma için bkz. Erişilebilirlik düzeyleri.For a comparison of protected internal with the other access modifiers, see Accessibility Levels.

ÖrnekExample

Bir temel sınıfın korunan iç üyesine, kendisini içeren derleme içindeki herhangi bir türden erişilebilir.A protected internal member of a base class is accessible from any type within its containing assembly. Ayrıca, başka bir derlemede bulunan türetilmiş bir sınıfta, yalnızca erişim türetilmiş sınıf türünün bir değişkeniyle gerçekleşirse erişilebilir.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. Örneğin, aşağıdaki kod kesimini göz önünde bulundurun: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;
    }
}

Bu örnek, ve olmak üzere iki dosya içerir Assembly1.cs Assembly2.cs .This example contains two files, Assembly1.cs and Assembly2.cs. İlk dosya bir ortak temel sınıf, BaseClass ve başka bir sınıf içerir TestAccess .The first file contains a public base class, BaseClass, and another class, TestAccess. BaseClass, türü tarafından erişilen korumalı bir iç üyeye sahip myValue TestAccess .BaseClass owns a protected internal member, myValue, which is accessed by the TestAccess type. İkinci dosyada, myValue bir örneği üzerinden erişim girişimi BaseClass bir hata üretir, bu üyeye türetilmiş bir sınıf örneği aracılığıyla erişim DerivedClass başarılı olur.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.

Struct üye olamaz protected internal çünkü yapı devralınamaz.Struct members cannot be protected internal because the struct cannot be inherited.

C# dili belirtimiC# language specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also