2010-05-28 12 views
7

का उत्सुक बस उत्सुक है।असाइन किए गए गैर-शून्य परिवर्तनीय (सी #)

तुम जाओ, तो:

string myString; 

इसका मान रिक्त है।

लेकिन अगर आप जाना:

int myInt; 

सी # में इस वेरिएबल का मान क्या है?

धन्यवाद

डेविड

+2

आपके लिए इसका उत्तर देने के लिए एक सरल परीक्षण पर्याप्त होगा। – spender

+4

मुझे लगता है कि उत्तरों की गुणवत्ता ने प्रश्न के मूल्य को साबित कर दिया है। पृष्ठभूमि यांत्रिकी प्रदान करने के लिए – David

उत्तर

26

सबसे पहले, ध्यान दें कि यह केवल फ़ील्ड के लिए लागू है, स्थानीय चर नहीं - उनको तब तक पढ़ा नहीं जा सकता जब तक उन्हें कम से कम C# के भीतर असाइन नहीं किया जाता है। वास्तव में सीएलआर 0 में स्टैक फ्रेम शुरू करता है यदि आपके पास उचित ध्वज सेट है - जो मुझे विश्वास है कि यह डिफ़ॉल्ट रूप से है। यद्यपि यह शायद ही कभी देखा जा सकता है - आपको कुछ गड़बड़ हैक्स से गुजरना है।

int का डिफ़ॉल्ट मान 0 है - और किसी भी प्रकार के लिए, यह अनिवार्य रूप से शून्य से भरा थोड़ा पैटर्न द्वारा दर्शाया गया मान है। मान प्रकार के लिए यह पैरामीटर रहित कन्स्ट्रक्टर को कॉल करने के बराबर है, और संदर्भ प्रकार के लिए यह शून्य है।

मूल रूप से सीएलआर स्मृति के साथ मेमोरी को साफ करता है।

यह किसी भी प्रकार के लिए default(SomeType) द्वारा दिया गया मान भी है।

+1

+1। – RedFilter

+1

और फ़ील्ड/वेरिएबल भेद – Blorgbeard

+0

के लिए +1 जब मैंने प्रश्न लिखा था तो मेरा मतलब क्षेत्र के बजाय स्थानीय चर था, लेकिन चूंकि मैं इस संबंध में भेद से अनजान था, इसलिए मैंने यह स्पष्ट नहीं किया। मुझे नहीं पता था कि int फ़ील्ड शून्य पर शुरू किए गए थे - उस जानकारी के लिए धन्यवाद। – David

5

पूर्णांक के डिफ़ॉल्ट 0

2

यहां सी #: http://msdn.microsoft.com/en-us/library/83fhsxwc.aspxमें मान प्रकारों के लिए डिफ़ॉल्ट मानों की एक तालिका हैसंदर्भ प्रकार डिफ़ॉल्ट मान आमतौर पर शून्य है।

2

स्ट्रिंग एक संदर्भ प्रकार है। Int एक मूल्य प्रकार है। संदर्भ प्रकार केवल ढेर पर निर्देशित स्टैक पर एक सूचक होते हैं, जिसमें कोई मान हो सकता है या नहीं। एक मान प्रकार केवल ढेर पर मूल्य है, लेकिन इसे हमेशा कुछ पर सेट किया जाना चाहिए।

1

T के एक प्रारंभिक चर के लिए मान हमेशा default(T) है। सभी संदर्भ प्रकारों के लिए यह शून्य है, और मूल्य प्रकारों के लिए लिंक @Blorgbeard पोस्ट किया गया है (या इसे जांचने के लिए कुछ कोड लिखें)।

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