क्या यह जांचना संभव है कि एक चर को स्ट्रिंग के रूप में परिभाषित किया गया है यदि उसके अंदर का मान शून्य है?यदि यह स्ट्रिंग है तो शून्य मान चर का परीक्षण कैसे करें?
अगर मैं लिखना:
string b = null;
bool c = b is string;
फिर ग झूठा होगा, क्योंकि सामग्री है, जो बातिल और नहीं एक स्ट्रिंग है पर लग रहा है है।
अगर मैं लिखना:
string b = null;
bool c = (b.GetType() == typeof(string));
तो यह दुर्घटनाओं क्योंकि रों रिक्त है और आप एक शून्य मान पर GetType() फोन नहीं कर सकते हैं।
तो, मैं यह जानने के लिए बी कैसे जांच सकता हूं कि यह किस प्रकार है? शायद कुछ प्रकार का प्रतिबिंब? या क्या कोई आसान तरीका है?
संपादित करें 1: प्रश्न का स्पष्टीकरण!
मैं अपने प्रश्न में थोड़ा अस्पष्ट था और यह मेरी गलती थी। उदाहरण में ऐसा लगता है कि मैं चर की सामग्री का परीक्षण करने की कोशिश कर रहा हूं। लेकिन मैं सामग्री को देखे बिना वैरिएबल का परीक्षण करना चाहता हूं। दिए गए कोड उदाहरणों में मैं देख सकता हूं कि बी एक स्ट्रिंग है, लेकिन अगर मुझे नहीं पता कि बी एक स्ट्रिंग है या नहीं, तो यह देखने के लिए वेरिएबल एस का परीक्षण करना चाहते हैं कि यह स्ट्रिंग है या नहीं।
तो, मैं कैसे जान सकता हूं कि चर किस प्रकार परिभाषित किया गया है? इस उदाहरण के रूप में, लेकिन एक्स एक अज्ञात चर है जिसे स्ट्रिंग के रूप में परिभाषित किया जा सकता है और यह भी शून्य हो सकता है (क्योंकि यह शून्य हो सकता है यह उदाहरण काम नहीं करेगा)।
bool c = (x.GetType() == typeof(string));
संपादित 2: कार्य समाधान!
दिए गए सभी उत्तरों के लिए धन्यवाद, मैं इसे हल करने में सक्षम था। इस तरह कामकाजी समाधान बन गया। मैंने पहले एक वैरिएबल के परिभाषित प्रकार का परीक्षण करने के लिए एक सहायता फ़ंक्शन बनाया जो कि मान शून्य होने पर भी काम करता है और यह किसी भी चीज़ को इंगित नहीं करता है।
public static Type GetParameterType<T>(T destination)
{
return typeof(T);
}
तो मैं सिर्फ इस फ़ंक्शन को कॉल करें और मेरे "संदिग्ध स्ट्रिंग" का परीक्षण करने और यह पता लगाने अगर यह सच में एक स्ट्रिंग नहीं है या कर सकते हैं।
// We define s as string just for this examples sake but in my "definition" we wouldn't be sure about whether s is a string or not.
string s = null;
// Now we want to test to see if s is a string
Type t = GetParameterType(s);
b = t == typeof(string); // Returns TRUE because s has the type of a string
b = t is string; // Returns FALSE because the content isn't a string
यह वही है जो मैं जानना चाहता था !!! अपने दिमाग फैलाएंगे के लिए आप सभी को धन्यवाद ...
संभावित डुप्लिकेट [.NET: आपको एक नल ऑब्जेक्ट का प्रकार कैसे मिलता है?] (Http://stackoverflow.com/questions/254461/net-how-do-you-get-the-type-of -ए-नल-ऑब्जेक्ट), [सी # नल ऑब्जेक्ट का प्रकार प्राप्त करें] (http://stackoverflow.com/q/930147), [अंतर्निहित प्रकार का एक शून्य ऑब्जेक्ट प्राप्त करना] (http://stackoverflow.com/q/3650060), [ऑब्जेक्ट संदर्भ के लिए शून्य संदर्भ ऑब्जेक्ट प्राप्त करें किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है] (http://stackoverflow.com/q/3663802) –
मुझे संदेह है कि क्या आप कर सकते हैं कि coz null प्रतीकात्मक नहीं है एक विशिष्ट प्रकार – V4Vendetta
आप शायद ऐसी समस्या को हल करने का प्रयास कर रहे हैं जो एक अलग तरीके से बेहतर हल हो जाएगा। क्या आप जो कुछ करने की कोशिश कर रहे हैं उस पर विस्तार कर सकते हैं? – Sean