System.BooleanReference 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でのプリミティブ値型の宣言は、型のボックス化表現と一致します。