System.Boolean참조 소스 웹 사이트 의 소스 코드에 struct Boolean포함 된 인스턴스 에는 단일 bool필드 만 포함되어 있습니다 . private bool m_value:
https://referencesource.microsoft.com/#mscorlib/system/boolean.cs,f1b135ff6c380b37
namespace System {
using System;
using System.Globalization;
using System.Diagnostics.Contracts;
[Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Boolean : IComparable, IConvertible
#if GENERICS_WORK
, IComparable<Boolean>, IEquatable<Boolean>
#endif
{
private bool m_value;
internal const int True = 1;
internal const int False = 0;
internal const String TrueLiteral = "True";
internal const String FalseLiteral = "False";
public static readonly String TrueString = TrueLiteral;
public static readonly String FalseString = FalseLiteral;
}
그러나 나는 그것을 알아 차렸다.
bool이다 는 C # 언어 별칭 에 대한System.Boolean.- type은
struct Booleanvalue-type 이므로 필드 자체를 포함 할 수 없습니다 . - ...하지만이 코드는 아마도 컴파일됩니다.
-nostdlib컴파일러 옵션이 설정 되면 , 와 같은 필수 유형 정의 를 제공해야 한다는 것을 이해합니다 . 이것이 유일한 차이점입니다.System.StringSystem.Int32System.Exception- 게시 된 소스 코드에는와 같은 다른 특수 속성이 없습니다
[MethodImpl( MethodImplOptions.InternalCall )].
그렇다면이 코드는 어떻게 컴파일됩니까?
bool의 키워드 입니다. 컴파일러와 런타임에는 형식에 대한 많은 기본 지식이 있으며 System.Boolean의 도움이 필요하지 않습니다. 기본 값 형식에 대한 mscorlib의 선언은 형식의 상자 표시와 일치합니다.