티스토리 뷰
internal
키워드는 형식 및 형식 멤버에 대한 액세스 한정자입니다.
이 페이지에서는
internal
액세스 합니다.internal
키워드 이기도의 일부로protected internal
액세스 한정자입니다.
내부 형식 또는 멤버는 다음 예제와 같이 동일한 어셈블리의 파일 내에서만 액세스할 수 있습니다.
public class BaseClass
{
// Only accessible within the same assembly
internal static int x = 0;
}
internal
및 다른 액세스 한정자와 비교는 액세스 가능성 수준 및 액세스 한정자를 참조하세요.
어셈블리에 대한 자세한 내용은 어셈블리 및 전역 어셈블리 캐시를 참조하세요.
내부 액세스는 구성 요소 그룹이 나머지 응용 프로그램 코드에 노출되지 않고 비공개 방식으로 상호 작용할 수 있도록 하기 때문에 일반적으로 구성 요소 기반 개발에 사용됩니다. 예를 들어 그래픽 사용자 인터페이스를 빌드하기 위한 프레임워크는 내부 액세스로 멤버를 사용하여 상호 작용하는 Control
및 Form
클래스를 제공할 수 있습니다. 이러한 멤버는 internal이므로 프레임워크를 사용하는 코드에 노출되지 않습니다.
정의 시 사용된 어셈블리 외부에서 내부 액세스로 형식 또는 멤버를 참조하면 오류가 발생합니다.
예제
이 예제에는 Assembly1.cs
및 Assembly1_a.cs
의 두 파일이 포함되어 있습니다. 첫 번째 파일에는 내부 기본 클래스인 BaseClass
가 포함되어 있습니다. 두 번째 파일에서 BaseClass
를 인스턴스화하려고 하면 오류가 발생합니다.
// Assembly1.cs
// Compile with: /target:library
internal class BaseClass
{
public static int intM = 0;
}
// Assembly1_a.cs
// Compile with: /reference:Assembly1.dll
class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // CS0122
}
}
예제
이 예제에서는 예제 1에서 사용한 것과 동일한 파일을 사용하고 BaseClass
의 액세스 가능성 수준을 public
으로 변경합니다. 또한 IntM
멤버의 액세스 가능성 수준을 internal
로 변경합니다. 이 경우 클래스를 인스턴스화할 수 있지만 내부 멤버에는 액세스할 수 없습니다.
// Assembly2.cs
// Compile with: /target:library
public class BaseClass
{
internal static int intM = 0;
}
// Assembly2_a.cs
// Compile with: /reference:Assembly1.dll
public class TestAccess
{
static void Main()
{
BaseClass myBase = new BaseClass(); // Ok.
BaseClass.intM = 444; // CS0117
}
}
- Total
- Today
- Yesterday
- 통신
- 챔픽스 후기 금연
- 설탕
- 뇌
- 100일
- 다이어트
- java
- 흡연
- oracle
- 인공지능
- 믹스커피
- 유전자
- 단백질
- 생명과학
- 보건소
- DNA
- 보건
- 금연일기
- 윈도우10
- 챔픽스 후기
- 금단증상
- 챔픽스
- 과학
- 의료
- 부작용
- 금연
- 오라클
- 냄새
- 지진
- 상식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |