2015-09-03 9 views
7

मैं http://referencesource.microsoft.com/#mscorlib/system/boolean.cs पर बूलियन स्रोत कोड मिला:बूलियन एक स्टैक ओवरफ्लो एक्सेप्शन क्यों नहीं फेंकता है?

public struct Boolean 
{ 
    ... 
    private bool m_value; 
    ... 
} 

क्यों नहीं एक StackOverflowException फेंक करता है?

+1

आपको समझाया जाना चाहिए कि ऐसा क्यों लगता है। – csmckelvey

+1

@ टाकेन्दर्क बूल में एक बूल शामिल है जिसमें एक बूल शामिल होता है जिसमें एक बूल शामिल होता है जिसमें एक बूल शामिल होता है जिसमें एक बूल में एक बूल शामिल होता है ........ omg – Cologler

+2

नहीं, एक बूलियन में एक बूल शामिल है। – csmckelvey

उत्तर

4

कारण यह काम करता है क्योंकि बूल और सिस्टम। बुलीयन प्रकार वास्तव में अलग हैं।

आदिम बूल प्रकार एक अंतर्निहित प्रकार है जो 1 बाइट स्टोर करता है।

सिस्टम। बुलीयन प्रकार आदिम प्रकार के लिए ऑब्जेक्ट रैपर के रूप में कार्य करता है और आईसीओम्पेर्बल और आईकोनवर्टेबल इंटरफेस लागू करता है। इस रैपर को आदिम प्रकार का बारीकी से प्रतिनिधित्व करने के लिए लागू किया गया है ताकि वे तार्किक रूप से अदला-बदले हो सकें।

सामान्य टाइप सिस्टम पर निर्माण करने वाले .NET Framework उपयोगकर्ताओं के रूप में, हम बस उनके बारे में बात करते हैं क्योंकि, हमारे मामले में, सी # कंपाइलर सिस्टम के लिए उपनाम के रूप में "बूल" कीवर्ड का व्यवहार करता है। बूलियन प्रकार कि आप mscorlib.dll में कार्यान्वित देखते हैं।

+1

जब मैं अपने कोड में बूल प्रकार का उपयोग करता हूं, तो वास्तव में मैं किसका उपयोग करता हूं? – Cologler

+0

मुझे यकीन है कि आप System.Boolean प्रकार का उपयोग कर रहे हैं जब आप/nostdlib संकलक विकल्प निर्दिष्ट नहीं करते हैं, सामान्य रूप से mscorlib.dll का संदर्भ लें। – Biscuits

+0

मुझे आश्चर्य है कि उस 'बूल' पर "परिभाषा पर जाएं" आपको ले जाएगा ... किसी भी कोड में यह आपको 'बूलियन' परिभाषा पर ले जाता है, जैसे 'int' आपको 'Int32' पर ले जाता है। – Andrew

संबंधित मुद्दे