문제

는 경우 int 동의어 Int32

enum MyEnum : Int32
{
    Value = 1
}

...컴파일되지 않?로

enum MyEnum : int
{
    Value = 1
}

는 것도 위에 마우스를 올려놓으면 int 단어가 표시됩 구조 시스템입니다.Int32?

도움이 되었습니까?

해결책

기본형은 실제로 동일하지만,컴파일러 유형에 따라 달라집으로 정확한 별명입니다.이 컴파일러 기반으로 구축하고 있음을 보여준다난 C#문법 명세 및 기본 정의된 형식이 있으로 토큰에 따라 별칭(예:'int','유닛'...etc.).이 파서는 특정 문자열에서 일체형 문법 규칙이 있습니다.

오류 분석류enum Enum : int 같은 의미 enum Enum : Int32.

내가 알지 못하는 이유에 대한 강제로 이러한 제한을 분석하는 단계이지만,을 시도할 수 있습니다 추측:이후 Int32 지 키워드 그것을 참조할 수도 있습하는 다른 무언가가 실제 int 구조체.면 파서 알아 유형을 구축하기 위해서는 다른 AST 각 기본 형식이 다음에 의존할 수 없음을 토큰하는 키워드가 아닙니다.

도 C#사양을 정의합 int 키워드 명시적으로 alias 시스템입니다.Int32,그것은 여전히 문제에 대한 정보를 얻을 수있는 명시적 유형(Int32)구문 분석하는 동안 단계 때문에 그것이 많이 필요하의 컨텍스트의 정보를 유추할 수 없습니다 이 단계입니다.

다른 팁

친숙한 호기심 ... 언어 사양 상태 (14.1) :

열거 선언은 기본 유형의 바이트, sbyte, short, ushort, int, uint, long 또는 ulong을 명시 적으로 선언 할 수 있습니다. Char는 기본 유형으로 사용할 수 없습니다. 기본 유형에 명시 적으로 선언하지 않는 열거 선언은 기본 유형의 int를 가지고 있습니다.

하지만 그때부터 int ~이다 일반적으로 그냥 별칭입니다 System.Int32 그렇지 않습니다 무모한 어느 쪽이든 효과가 있을지도 모르지만 실제로는 그렇지 않습니다. 일반적으로 큰 문제는 아니지만 흥미로 웠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top