ซอร์สโค้ดสำหรับSystem.Booleanที่เว็บไซต์แหล่งอ้างอิงระบุว่าอินสแตนซ์ของ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 สำหรับประเภทค่าดั้งเดิมตรงกับการแสดงชนิดบรรจุกล่อง