c# - Equals has a different behaviour between string and nullable of int -


क्यों स्ट्रिंग और int के nullable के बीच एक भिन्न व्यवहार के बराबर है?

  ((int ?)। शून्य)। एक्सेल (रिक्त)  

यह निर्देश रिटर्न सच

  ((स्ट्रिंग) नल)। एक्सेल (रिक्त)  < / पूर्व> 

यह अनुदेश फेंकता शून्य है

तो, कैसे (स्ट्रिंग, स्ट्रिंग) की एक कुंजी वैल्यू की जाँच करें कि कुंजी शून्य है

संपादित करें: मैं String.IsNullOrEmpty का उपयोग नहीं कर सकता क्योंकि मैं कुछ स्ट्रिंग (स्ट्रिंग, स्ट्रिंग) के कील्यूपेय की सूची और (Int ?, String) की कुछ वैल्यू की सूची का उपयोग करता हूं जहां की कुंजी रिक्त या स्ट्रिंग हो सकती है। देश की एक सूची पर फ़िल्टर करने की सूची:

  myList.Add (नया कीवालिप्यूयर (रिक्त, "अपरिभाषित")); MyList.Add (नई कुंजीव्यूपायर ("", "खाली")); MyList.Add (नई कुंजीव्यूपायर ("ID101", "फ्रांस")); MyList.Add (नया कीवाल्यूअरपेयर ("ID102", "स्पेन"));  

इस मामले में व्यवहार अलग है क्योंकि Nullable & lt; T & gt; एक मूल्य प्रकार है, जबकि एक स्ट्रिंग एक संदर्भ प्रकार है।

तो यह:

< पूर्व> (int?) Null

असल में एक मान है, क्योंकि यह एक वैल्यू टाइप है इस प्रकार आप इसके तरीकों पर कॉल कर सकते हैं।

किसी भी स्थिति में, यह नीचे के प्रश्न के लिए ओर्थोगोनल है, कैसे की जांच करने के लिए कि क्या एक प्रकार की स्ट्रिंग की कुंजी वैल्यू शून्य है ...

क्या के बारे में:

  यदि (kvp.Key == शून्य)  

यदि null को उसी तरह से व्यवहार किया जाना चाहिए < कोड> स्ट्रिंग.प्रकाश , आप इसका उपयोग कर सकते हैं:

  यदि (string.IsNullOrEmpty (kvp.Key))  

और यदि कुंजी में केवल रिक्त स्थान (स्पेस, टैब, लाइनफीड, आदि) शामिल है और यह भी बराबर है, आप इसका उपयोग कर सकते हैं:

  यदि (string.IsNullOhWhiteSpace (kvp.Key))  

Comments

Popular posts from this blog

Member with no value in F# -

java - Joda Time Interval Not returning what I expect -

c# - Showing a SelectedItem's Property -