2010-04-21 8 views
6

क्या सी # में एक स्ट्रिंग को अस्वीकार करने का कोई शॉर्टेंड तरीका है?क्या सी # में एक स्ट्रिंग को अस्वीकार करने का कोई शॉर्टेंड तरीका है?

यह की बराबर होगा (अगर 'एक्स' एक स्ट्रिंग है):

string y = #x; 

इच्छाधारी:

string y = x == null ? "" : x; 

मुझे लगता है कि मैं आशा करती हूं कि कुछ ऑपरेटर ऐसा ही कुछ काम करेगा है सोच रहा है, हुह?

निकटतम मैं अब तक मिल गया है स्ट्रिंग वर्ग पर एक विस्तार विधि है:

public static string ToNotNull(this string value) 
{ 
    return value == null ? "" : value; 
} 

जो मुझे करने के लिए अनुमति देता है:

string y = x.ToNotNull(); 

कि पर कोई सुधार, किसी को?

+1

मैं इस समस्या से बचने के लिए शून्य तारों से बचता हूं। अगर कोई और नल स्ट्रिंग बना रहा है, तो हिंसा आवश्यक हो सकती है। YMMV। – Greg

+0

तथ्य यह है कि आपका आखिरी उदाहरण काम करता है, यह बहुत डरावना है, क्योंकि ऑब्जेक्ट पर ऑब्जेक्ट है कि ऑब्जेक्ट = null है या नहीं। मुझे पता है कि विस्तार के तरीके स्थिर होने के कारण हैं, लेकिन इसे देखते समय यह गलत लगता है। – ntziolis

+0

नल स्ट्रिंग्स बुराई हैं, स्ट्रिंग के साथ तत्काल। लक्षण और उपरोक्त तर्क से बचें। –

उत्तर

0

आप इस नियमित रूप से की जरूरत है, एक विस्तार विधि के बजाय आप अपने खुद के प्रकार है जो एक Nullable और शेयरों में एक ही तरह बर्ताव करता है बनाने पर विचार करना चाह सकते हैं एक सिस्टम के रूप में उपयोग। Nullable.GetValueOrDefault(); तरीका। दुर्भाग्यवश, आप केवल सिस्टम का उपयोग कर सकते हैं। मूल्य प्रकारों पर टिकाऊ ताकि आप मानक के रूप में एक नालीदार स्ट्रिंग नहीं बना सकें।

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

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