का उपयोग कर निम्नलिखित पर विचार करें, पहली नज़र बेतुका, पैटर्न मैच पर:पैटर्न मिलान में अलग व्यवहार जब वर या स्पष्ट प्रकार
string s = null;
if (s is string ss) //false
if (s is string) //false
दोनों is
false
वापस आ जाएगी। लेकिन अगर हम var
का उपयोग व्यवहार को पूरी तरह बदल देता है:
string s = null;
if (s is var ss) //true!?!
आप VS2017 में var
पर होवर करते हैं, प्रकार string
है, लेकिन is
के व्यवहार पूरी तरह से अलग है। कंपाइलर कुछ मूल रूप से अलग कर रहा है भले ही अनुमानित प्रकार समान है। यह कैसे हो सकता है? क्या यह एक बग है? null
किसी भी तरह से बाहर बुलबुला टाइप करें?
'var ss' नया, शून्य परिवर्तनीय परिभाषित नहीं है? यहां: https://visualstudiomagazine.com/articles/2017/02/01/pattern-matching.aspx आप देख सकते हैं कि यह आवश्यक प्रकार का अस्थायी चर बना रहा है, फिर आप जांच सकते हैं कि स्थिति सही है या नहीं। – sTrenat
@sTrenat ठीक है, और क्यों 'स्ट्रिंग एसएस' नहीं है? – InBetween
मुझे लगता है कि ऑपरेटर 'है' कर रहा है .GetType() और फिर जांच कर रहा है कि टाइप अच्छा है, शून्य के लिए, कोई प्रकार निर्दिष्ट नहीं है, इसलिए यह जांच नहीं सकता है। नए 'var' ऑपरेटर के लिए, यह नया ऑपरेटर के साथ – sTrenat