.net - iif equivalent in c# -


क्या कोई IIf बराबर C # है? या समान शॉर्टकट?

सी # में "?" टर्नरी ऑपरेटर, जैसे अन्य सी-स्टाइल भाषाओं हालांकि, यह पूरी तरह से iif के बराबर नहीं है। दो महत्वपूर्ण अंतर हैं।

पहले की व्याख्या करने के लिए, यह iif () कॉल एक divideByZero अपवाद का कारण होगा, हालांकि अभिव्यक्ति सही है क्योंकि iif केवल एक फ़ंक्शन है और कॉल करने से पहले सभी तर्कों का मूल्यांकन किया जाना चाहिए:

  iif (true, 1, 1/0)  

दूसरी तरफ रखें Iif करता है पारंपरिक अर्थों में नहीं शॉर्ट सर्किट, जैसा कि आपका प्रश्न इंगित करता है दूसरी ओर, यह त्रिगुट अभिव्यक्ति और पूरी तरह से ठीक है:

  (सत्य)? 1: 1/0;  

अन्य अंतर यह है कि iif प्रकार सुरक्षित नहीं है यह स्वीकार करता है और प्रकार के तर्क देता है वस्तु टर्नेरी ऑपरेटर का उपयोग किस तरह से निपटने वाला है, इसका पता लगाने के लिए प्रकार अनुमान का उपयोग करता है। ध्यान दें कि आप इसे सामान्य रूप से एक सामान्य कार्यान्वयन के साथ ठीक कर सकते हैं, लेकिन जिस तरह से वह है वह बॉक्स से बाहर है।

अगर आप वास्तव में सी # में IIF चाहते हैं, तो आप इसे प्राप्त कर सकते हैं:

  ऑब्जेक्ट iif (bool अभिव्यक्ति, ऑब्जेक्ट सत्यपार्ट, ऑब्जेक्ट गलत पार्ट) {वापसी अभिव्यक्ति? TruePart: falsePart; }  

या एक सामान्य / प्रकार-सुरक्षित कार्यान्वयन:

  टी iif & lt; T & gt; (बूल अभिव्यक्ति, टी सचपार्ट, टी झूठी पृष्ठ) {वापसी अभिव्यक्ति? दूसरी ओर, यदि आप VB में टर्नर ऑपरेटर चाहते हैं, तो दृश्य स्टूडियो 2008 और बाद में एक नया  अगर   ऑपरेटर प्रदान करें  जो सी # के टर्नर से अधिक काम करता है यह पता चलता है कि यह क्या लौट रहा है, और यह फ़ंक्शन के बजाय एक ऑपरेटर है, इसलिए इसमें कोई प्रकार की व्याख्या नहीं है, इसलिए कोई भी पेस्की विभाजन-शून्य-शून्य समस्या नहीं है। 


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -