다음 코드를 사용하면 inconsisteng 접근성을 계속보고하지만 이유를 이해할 수 없습니다. 이 프로그램 클래스의 존재 여부가 공개되는에 따라 달라집니다 : 당신은 당신의 열거 선언에 액세스 한정자를 넣어하지 않은, 그리고 당신이 당신의 Program
클래스의 public
필드로 노출되어열거 형 및 공용 클래스와의 혼동 - 왜 작동하지 않습니까?
enum Test
{A,B}
public class Program //when I remove public, it works
{
public Test a = Test.A;
static void Main(string[] args)
{
}
}
그래,하지만 왜 프로그램 클래스의 액세스 수정자를 이해하지 못합니다. – Loj
오, 알았어. 왜냐하면 다른 어셈블리가 공용 프로그램 클래스에 액세스 할 수 있고 공용 필드에서 열거 형을 노출하기 때문입니다. 그러나 열거 형 자체는 개인용입니다 (내부도 마찬가지입니다). – Loj
@Mojmi : 예, 맞습니다. 클래스 필드의 액세스 가능성은 클래스의 액세스 가능성에 의해 무시됩니다. 예. 클래스가'internal'이고'public' 필드를 가지고있는 경우, 클래스는 클래스에 대한 액세스를 제한하기 때문에 공개적으로 액세스 할 수 없습니다. – adrianbanks