У вихідному коді System.Booleanна веб-сайті Reference Source зазначено, що екземпляри 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.- Тип -
struct Booleanце тип типу значення, що означає, що він не може містити себе як поле . - ... все ж цей код, імовірно, складається.
- Я розумію , що коли
-nostdlibпараметр компілятора встановлений вам необхідно надати свої власні основні визначення типу подобаєтьсяSystem.String,System.Int32,System.Exception- це єдина відмінність. - Опублікований вихідний код не містить інших спеціальних атрибутів, таких як
[MethodImpl( MethodImplOptions.InternalCall )].
То як складається цей код?
bool- ключове слово на мові C #. І компілятор, і час виконання має багато вбудованих знань про тип і не потребує допомоги System.Boolean. Декларації в mscorlib для типів примітивних значень відповідають коробчатому представленню типу.