Il codice sorgente per System.Booleannel sito Web Fonte di riferimento afferma che le istanze del struct Booleancontengono solo un singolo 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;
}
Ma ho notato che ...
boolè un alias di linguaggio C # perSystem.Boolean.- Il tipo è
struct Booleanquale è un tipo di valore, il che significa che non può contenere se stesso come campo . - ... eppure questo codice presumibilmente si compila.
- Capisco che quando l'
-nostdlibopzione del compilatore è impostato è necessario fornire i propri essenziali definizioni dei tipi piaceSystem.String,System.Int32,System.Exception- questa è l'unica differenza. - Il codice sorgente pubblicato non contiene altri attributi speciali come
[MethodImpl( MethodImplOptions.InternalCall )].
Quindi, come si compila questo codice?
boolè una parola chiave nel linguaggio C #. Sia il compilatore che il runtime hanno molte conoscenze integrate sul tipo e non hanno bisogno dell'aiuto di System.Boolean. Le dichiarazioni in mscorlib per i tipi di valore primitivi corrispondono alla rappresentazione in box del tipo.