Favicon

Internal access modifier

Peponi12/2/20242m

C#
SyntaxKeywordModifier

1. Introduction

internal 키워드는 형식 및 멤버에 대한 액세스 한정자이다. internal로 선언하면 해당 어셈블리 내에서만 public과 같이 접근할 수 있으며 주로 모듈 단위 프로젝트에서 내부 구성요소에 사용한다.

2. Example

2.1. Type

internaltype

Assembly 1
namespace Assembly1
{
    internal class BaseClass
    {
        internal string A = "internal";
    }
 
    internal class DerivedA : BaseClass
    {
        public DerivedA()
        {
            A = "DerivedA";                // OK
        }
    }
 
    internal class OtherClass
    {
        public BaseClass Base = new BaseClass();
 
        private static void Main(string[] args)
        {
            Base.A = "OtherClass";         // OK
        }
    }
}
Assembly 2
namespace Assembly2
{
    internal class DerivedB : BaseClass     // CS0122 : 상속 불가
    {
    }
 
    internal class OtherClass
    {
        public BaseClass Base = new BaseClass();       // CS0122
    }
}

2.2. Member

internalmember

Assembly 1
namespace Assembly1
{
    public class BaseClass
    {
        internal string A = "internal";
    }
 
    internal class DerivedA : BaseClass
    {
        public DerivedA()
        {
            A = "DerivedA";              // OK
        }
    }
 
    internal class OtherClass
    {
        public BaseClass Base = new BaseClass();
 
        public OtherClass()
        {
            Base.A = "OtherClass";       // OK
        }
    }
}
Assembly 2
namespace Assembly2
{
    internal class DerivedB : BaseClass
    {
        public DerivedB()
        {
            A = "DerivedB";              // CS0122
        }
    }
 
    internal class OtherClass
    {
        public BaseClass Base = new BaseClass();
 
        public OtherClass()
        {
            Base.A = "OtherClass";      // CS0122
        }
    }
}

3. 참조 자료