O código-fonte para System.Booleanno site da fonte de referência afirma que as instâncias do struct Booleancontêm apenas um único boolcampo: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;
}
Mas eu notei que ...
boolé um alias do idioma C # paraSystem.Boolean.- O tipo é
struct Booleanum tipo de valor, o que significa que não pode se conter como um campo . - ... no entanto, este código provavelmente compila.
- Eu entendo que quando a
-nostdlibopção do compilador está definida, você precisa fornecer suas próprias essencial definições de tipo de gostoSystem.String,System.Int32,System.Exception- essa é a única diferença. - O código-fonte publicado não contém outros atributos especiais, como
[MethodImpl( MethodImplOptions.InternalCall )].
Então, como esse código é compilado?
boolé uma palavra - chave na linguagem C #. Tanto o compilador quanto o tempo de execução têm muito conhecimento interno sobre o tipo e não precisam da ajuda do System.Boolean. As declarações em mscorlib para os tipos de valor primitivo correspondem à representação em caixa do tipo.