कई बार जिसमें मैं एक इनपुट पाठ है देखते हैं,सी # खाली स्ट्रिंग -> शून्य?
और उसके खाली (उपयोगकर्ता फ्लॉप किसी भी पाठ लिखें) यदि - मैं डीबी क्वेरी "अशक्त"
और नहींString.Empty.
को भेजना चाहते हैं (या "")
तो मैं लगता है मेरे आत्म यह एक बहुत कुछ कर:
var mySqlValue = string.IsNullOrEmpty(tbCustomerId.Text)?null:tbCustomerId.Text;
यह मेरे लिए बदसूरत लगता है।
.net विपरीत परिदृश्यों के लिए अन्य समाधान का एक बहुत देता है:
string.IsNullOrEmpty
string.IsNullOrWhiteSpace
myProblemVal ?? myDefultVal
मैं जानता हूँ कि इस विस्तार के तरीकों से हल किया जा सकता है - और मैं इसे कैसे करना है पता ..
लेकिन क्या कुछ बेहतर है?
क्या कोई बुद्धिमान कोड है: "if its empty -> null
"।
public static class Extensions {
public static string NullIfWhiteSpace(this string value) {
if (String.IsNullOrWhiteSpace(value)) { return null; }
return value;
}
}
जो तुम उस तरह इस्तेमाल कर सकते हैं:
var mySqlValue = tbCustomerId.Text.NullIfWhiteSpace();
मैं वास्तव में नहीं पता है कि आप कुछ विस्तार तरीकों की तुलना में बेहतर द्वारा कल्पना
निम्नलिखित समस्या भी है: यदि '.Text' एक संपत्ति है (यानी 'प्राप्तकर्ता' पहुंचने वाला कॉल), पहली बार गेटर कहलाता है, तो यह एक लंबी स्ट्रिंग वापस कर सकता है," जॉन डो " '। हम टर्नरी '?: 'सशर्त ऑपरेटर के अंतिम" घटक "का मूल्यांकन करते हैं। लेकिन यह फिर से 'टेक्स्ट' गेटर' कहता है, और इस बार यह '" "वापस आ सकता है। इसलिए बहुमूल्य में आपको 'टेक्स्ट' की स्थानीय चर प्रतिलिपि लेनी होगी। यदि आप एक विस्तार विधि का उपयोग करते हैं, तो यह आवश्यक नहीं है। –
यदि आप एक विस्तार विधि का उपयोग करते हैं, तो आप जांच से पहले स्ट्रिंग को पहले ट्रिम कर सकते हैं, जो एकल अभिव्यक्ति में करना मुश्किल है। – toddmo