मिलता है मैं कोड की निम्न पंक्ति की है। मुझे समझ में नहीं आता क्यों है। null
की जांच करने के लिए मेरे कोड का पूरा बिंदु नहीं है और यदि ऐसा है तो string.empty
असाइन करें? जब मैं DEBUG में चेक करता हूं तो यह बता रहा है कि EditValue == null
तो मुझे क्या याद आ रही है?तो null.Equals (शून्य) कारण है कि मैं एक NullReferenceException
उत्तर
lkuDomainType.EditValue == null
का उपयोग करें, अन्यथा आप एक शून्य ऑब्जेक्ट पर एक इंस्टेंस विधि कॉल करने का प्रयास कर रहे हैं। लेकिन बेहतर विकल्प lkuDomainType.EditValue ?? String.Empty
हो सकता है। lkuDomainType
को शून्य होने के लिए भी देखें, जब तक कि यह एक वर्ग न हो।
धन्यवाद, हिंडसाइट में काफी स्पष्ट लगता है, निश्चित रूप से एक 'डुह' पल। धन्यवाद। –
+2 (दुर्भाग्य से संभव नहीं है) सही उत्तर और '??' का उपयोग करने की सिफारिश के लिए। –
+1: शून्य का उपयोग करते समय शून्य कोलेसिंग (या '??') ऑपरेटर .NET के लिए एक बढ़िया जोड़ा था और कुछ ऐसा जो मुझे बहुत याद आती है। – Powerlord
जब आप Object.Property
और Object
का उपयोग अपरिभाषित करते हैं, तो आप एक शून्य सूचक को संदर्भित कर रहे हैं और यही कारण है कि आपको अपवाद मिलता है। इसके बजाय, उपयोग:
var selectedDomainID = lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
मुझे सही उत्तर के लिए ए) को जवाब देना था, बी) वाक्य में * dereference * का उपयोग करने के लिए, और बी) लगभग उचित उपयोगकर्ता नाम –
के लिए महान उत्तर, +1, लेकिन SO कहता है कि @ यूरी का जवाब पहले था । हालांकि धन्यवाद। –
@ रिफ्रैक्टेड हां, यह 4 सेकंड तक था :) मुझे '??' – NullUserException
आप एक अशक्त वस्तु पर बराबर विधि कॉल करने की कोशिश कर रहे हैं - यह बजाय जैसे कि यह कार्य करें:
lkuDomainType.EditValue == null
EditValue == बातिल। इसका मतलब है कि वहां कोई वस्तु नहीं है। आप शून्य वस्तुओं पर फ़ंक्शंस को कॉल नहीं कर सकते हैं, भले ही फ़ंक्शन है .क्वल्स()।
आप इस मामले में बस "(lkuDomainType.EditValue == null)" कहने से बेहतर हैं।
यदि EditValue
शून्य है तो आप Equals
पर कॉल नहीं कर सकते हैं। इस कैस में आप क्या करना होगा:
var selectedDomainID = lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
या आप ऐसा करके इसे सरल कर सकते हैं:
var selectedDomainID = lkuDomainType.EditValue ?? string.Empty;
आप String.IsNullOrEmpty यहाँ का उपयोग करना चाहिए। इस तरह:
var selectedDomainID = String.IsNullOrEmpty(lkuDomainType.EditValue) ? string.Empty : lkuDomainType.EditValue;
बराबर एक विधि है, तो आप एक अशक्त वस्तु जो एक अपवाद फेंक रहा है पर एक विधि कॉल करने की कोशिश कर रहे हैं।
मुझे समझ में नहीं आ रहा है, 'स्ट्रिंग। INNullOrEmpty' भी एक * विधि * नहीं है? –
यह एक स्थिर विधि है, यह lkuDomainType.EditValue ऑब्जेक्ट की विधि नहीं है। – brendan
आह, इसे साफ़ करने के लिए धन्यवाद। –
जब EditValue रिक्त है आप उस पर बराबर विधि कॉल नहीं कर सकते तो जाँच करने के लिए सबसे अच्छा तरीका है
lkuDomainType.EditValue == null ? string.Empty : lkuDomainType.EditValue;
समस्या उपयोग करने के लिए है कि आप पता चल सके कि यह शून्य से पहले वस्तु का उपयोग कर रहे है। आप ऑब्जेक्ट की Equals
विधि को कॉल कर रहे हैं, जो संदर्भ शून्य होने पर विफल रहता है।
आपको lkuDomainType.EditValue == null
के लिए अपने lkuDomainType.EditValue.Equals(null)
का आदान-प्रदान करना होगा।
यदि lkuDomainType.EditValue शून्य है, तो "lkuDomainType.EditValue.Equals (someObject)" कोडिंग के समान है "null.Equals (someObject)"। खैर, जाहिर है, "शून्य" में कोई सदस्य या विधियां नहीं हैं (यदि यह किया गया तो यह शून्य नहीं होगा)। यही कारण है कि आप एक NullReferenceException मिलता है।
अन्य पदों के अधिकांश उदाहरण काम करेंगे, जिसमें स्ट्रिंग.इन्सनुलऑरफेक्टी शामिल है, जो एक विधि है जो एक बूलियन मान देता है।
lkuDomkain टाइप नहीं कर सकते हैं? जब आप lkuDomainType.EditValue को कॉल करते हैं, तो यह NullReferenceException फेंकता है। –
आपके शीर्षक के कारण: 'a == b'' a.Equals (b) 'जैसा नहीं है। –
@Stefan: महान बिंदु! भविष्य के खोजकर्ताओं के लिए अधिक सटीक होने के लिए परिवर्तित ... धन्यवाद –