2017-03-22 20 views
7

सी # 7 के साथ # 7 स्विच मामले पैटर्न नामक नई सुविधा है, जो आपको Is-अभिव्यक्ति के साथ उपयोग करें या इस तरह के मामलों स्विच कर सकते हैं का परिचय मामला # 1 के अंदर जाता है, क्योंकि यह वही प्रकार है, लेकिन ऐसा नहीं हुआ।सी अशक्त चेकों

+1

"जैसा कि यह वही प्रकार है" - वास्तव में नहीं। यदि आप ऑब्जेक्ट ओ = str करते हैं; बूल isString = o स्ट्रिंग है; 'फिर 'isString' गलत होगा ... –

+0

हाँ, सही, एक नल स्ट्रिंग सिस्टम का संदर्भ नहीं देती है। स्ट्रिंग ऑब्जेक्ट – MAbdulHalim

+0

@ जोनस्केट, यदि आप नीचे मेरा उत्तर देखते हैं तो मैं सराहना करता हूं, और इसकी समीक्षा करें। – MAbdulHalim

उत्तर

0

वास्तव में वे स्ट्रिंग पर शून्य के कारण नहीं हैं।

विचार है कि स्विच # 7 ग में पैटर्न के साथ मामलों अशक्त जाँच मामलों का मूल्यांकन करते हुए, और यदि आप अपने अशक्त मामले की जांच में नहीं जोड़ा था, यह डिफ़ॉल्ट मामले के लिए जाना जाएगा के लिए एक अन्य मामले कहते है, तो इस नई सुविधा का उपयोग करते समय एक शून्य मामला जोड़ना बेहतर है, या डिफ़ॉल्ट रूप से इसे छोड़ दें यदि आप जानते हैं कि डिफ़ॉल्ट क्या करेगा।

उम्मीद है कि यह मदद करता है!

+2

नहीं, यह इसके पीछे विचार नहीं है। बात यह है कि कैसे .NET हुड के नीचे काम करता है। मेरा उत्तर देखें जो बताता है कि यह पैटर्न कैसे लागू किया गया है। –

14

आप क्या सोच सकते हैं इसके बावजूद, string x = null वास्तव में एक स्ट्रिंग नहीं है। यह 'कुछ भी नहीं' है, जो टाइप स्ट्रिंग के चर के लिए असाइन किया गया है।

आपके स्विच में चेक मूल रूप से null is string जैसा है जो false पहले से ही लंबे समय से है। जेनेरिक के साथ प्रकारों का मूल्यांकन करते समय यह एक आम मुद्दा है, लेकिन इसके प्लस पक्ष भी हैं।

हुड के तहत, is एक शून्य जांच के साथ as का उपयोग करता है। इसलिए यही सच नहीं हो सकता है। आप कह सकते हैं कि is ऑपरेटर के लिए तर्क निम्नानुसार है:

is = (null as string) != null 
+0

धन्यवाद @ पैट्रिक-होफमैन और एक शून्य मामला बनाने की अवधारणा अगर मैंने एक प्रदान नहीं किया। क्या ये सही है? – MAbdulHalim

+0

हां। यही एकमात्र विकल्प है। –

+0

धन्यवाद @ पैट्रिक-होफमैन – MAbdulHalim

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