2015-12-18 5 views
6

इस कोड के साथ:"असाइन किए गए स्थानीय चर का उपयोग" त्रुटि का कारण क्या है?

bool dataToAdd; 
if (null == _priceComplianceDetailList) return dataToAdd; 

मैं एक संकलक त्रुटि हो रही थी,

तो मैं स्पष्ट रूप से bool करने के लिए आवंटित करने के लिए "गलत" था "अ-निरुपित स्थानीय चर के 'dataToAdd'उपयोग":

bool dataToAdd = false; 
if (null == _priceComplianceDetailList) return dataToAdd; 

संदर्भ में:

private bool PopulateSheetWithDetailData() 
{ 
    bool dataToAdd = false; 
    if (null == _priceComplianceDetailList) return dataToAdd; 
    List<PriceComplianceDetail> _sortedDetailList = 
    . . . 
    return _sortedDetailList.Count > 0; 
} 

यह आवश्यक क्यों है? मूर्खों के झूठ का डिफ़ॉल्ट मूल्य नहीं है?

+4

डिफ़ॉल्ट केवल क्लास सदस्यों पर लागू होता है, तरीकों में स्थानीय चर को स्पष्ट रूप से असाइन किया जाना चाहिए। – Lee

+1

आप पूरी तरह से चर को हटा सकते हैं क्योंकि आप सूची की गिनती के आधार पर लौट रहे हैं और पहले अगर ब्लॉक आप सीधे झूठी वापसी कर सकते हैं। –

उत्तर

11

क्योंकि स्थानीय चर डिफ़ॉल्ट रूप से प्रारंभ नहीं होते हैं। आपको उन्हें स्पष्ट रूप से प्रारंभ करना चाहिए। भविष्य की गलतियों से बचने के लिए यह एक कंपाइलर सुविधा है। यह भाषा विनिर्देश here और here में स्पष्ट किया गया है।

कारण यह सी # में गैर कानूनी है, क्योंकि एक असाइन नहीं किए गए स्थानीय का उपयोग कर एक बग

होने का उच्च संभावना है आप इस निर्णय here देखने के लिए कारण जानना चाहते हैं।

+1

भी प्रासंगिक है [सेक्शन 5.1.7] (https://msdn.microsoft.com/en-us/library/aa691170 (v = vs.71) .aspx)। विशेष रूप से: "_local-variable-declaration_ द्वारा पेश किया गया एक स्थानीय चर स्वचालित रूप से प्रारंभ नहीं होता है और इस प्रकार इसका कोई डिफ़ॉल्ट मान नहीं होता है।" –

+0

उत्तर में जोड़ा गया, धन्यवाद @JoeFarrell, – dotctor

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