Der Sourcecode für System.Booleanan der Referenzstelle Website heißt es, dass die Instanzen die struct Booleanenthalten nur ein einziges boolFeld: 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;
}
Aber mir ist aufgefallen, dass ...
boolist ein C # -Sprachenalias fürSystem.Boolean.- Der Typ ist
struct Booleanein Werttyp, was bedeutet, dass er sich nicht als Feld enthalten kann . - ... aber dieser Code wird vermutlich kompiliert.
- Ich verstehe, dass Sie, wenn die
-nostdlibCompiler-Option festgelegt ist, Ihre eigenen wesentlichen Typdefinitionen wie ,, - angebenSystem.StringmüssenSystem.Int32,System.Exceptiondas ist der einzige Unterschied. - Der veröffentlichte Quellcode enthält keine weiteren speziellen Attribute wie
[MethodImpl( MethodImplOptions.InternalCall )].
Wie wird dieser Code kompiliert?
boolist ein Schlüsselwort in der C # -Sprache. Sowohl der Compiler als auch die Laufzeit verfügen über umfangreiche Kenntnisse über den Typ und benötigen keine Hilfe von System.Boolean. Die Deklarationen in mscorlib für die primitiven Werttypen stimmen mit der Boxdarstellung des Typs überein.