दिलचस्प पोस्ट
मुझे कब डेटा संदर्भ का निपटान करना चाहिए? क्या मैक पर "वॉच" या "इनॉटिफाइवेट" जैसी कोई आज्ञा है? पीपी प्रयोग करके SciPy और NumPy इंस्टॉल करना उदाहरण के बिना संपत्ति मूल्य प्राप्त करें? क्या जावा के डिफॉल्ट पैकेज का एक बुरा अभ्यास है? गैर-आभासी नाशक के साथ व्युत्पन्न वर्ग खोज "संपूर्ण समाधान" के लिए काम करना बंद हो जाता है डोम इन्सरेसेज़ इवेंट C में scanf () में "\ n" का उपयोग करना MSI या Visual Studio 2012 के साथ सेटअप प्रोजेक्ट बनाएँ प्रति-क्रिया के आधार पर रूबी पर रूबी में लॉगिंग कैसे अक्षम कर सकता हूं? Jquery – अनचाहे प्रकार त्रुटि: '324' में खोजने के लिए 'इन' ऑपरेटर का उपयोग नहीं किया जा सकता जावा से पायथन स्क्रिप्ट को कैसे निष्पादित करें? उपयोगकर्ता नियंत्रण पर सार्वजनिक गुणों के लिए डिज़ाइनर कोड को कैसे रोकें? Image.open () छवि फ़ाइल की पहचान नहीं कर सकता – पायथन?

क्या सी # के 'के लिए VB.NET बराबर है?' ऑपरेटर?

सी # के लिए एक VB.NET बराबर है ?? ऑपरेटर?

Solutions Collecting From Web of "क्या सी # के 'के लिए VB.NET बराबर है?' ऑपरेटर?"

If() staetement एमएसडीएन से :

 If( [argument1,] argument2, argument3 ) 

जब If() को तीन तर्कों का उपयोग करके कहा जाता है, तो पहली तर्क को एक मूल्य के मूल्यांकन करना चाहिए जिसे बूलियन के रूप में डाला जा सकता है। वह बूलियन मान यह निर्धारित करेगा कि अन्य दो तर्कों में से किस का मूल्यांकन किया गया है और वापस लौटाया गया है। निम्नलिखित सूची तब लागू होती है जब तीन ऑपरेटर को तीन तर्कों का उपयोग करके कहा जाता है।

  This statement prints TruePart, because the first argument is true. Console.WriteLine(If(True, "TruePart", "FalsePart")) ' This statement prints FalsePart, because the first argument is false. Console.WriteLine(If(False, "TruePart", "FalsePart")) Dim number = 3 ' With number set to 3, this statement prints Positive. Console.WriteLine(If(number >= 0, "Positive", "Negative")) number = -1 ' With number set to -1, this statement prints Negative. Console.WriteLine(If(number >= 0, "Positive", "Negative")) 

IF() ऑपरेटर को आपके लिए चाल करना चाहिए:

 value = If(nullable, defaultValueIfNull) 

http://visualstudiomagazine.com/listings/list.aspx?id=252

स्वीकृत उत्तर में कोई भी स्पष्टीकरण नहीं है और यह केवल एक लिंक है।
इसलिए, मैंने सोचा कि मैं एक जवाब छोड़ दूँगा जो यह बताता है कि कैसे ऑपरेटर काम करता है MSDN से लिया गया है:


यदि ऑपरेटर (विज़ुअल बेसिक)

सशर्त रूप से दो मानों में से एक को वापस लाने के लिए शॉर्ट सर्किट मूल्यांकन का उपयोग करता है। अगर ऑपरेटर को तीन तर्कों के साथ या दो तर्क के साथ बुलाया जा सकता है।

 If( [argument1,] argument2, argument3 ) 

यदि ऑपरेटर दो तर्क के साथ बुलाया

यदि पहली बार तर्क दिया जाए तो छोड़ा जा सकता है। यह ऑपरेटर को केवल दो तर्कों का उपयोग करके कॉल करने में सक्षम बनाता है। निम्नलिखित सूची तब लागू होती है जब ऑपरेटर को दो तर्कों के साथ बुलाया जाता है।

पार्ट्स

 Term Definition ---- ---------- argument2 Required. Object. Must be a reference or nullable type. Evaluated and returned when it evaluates to anything other than Nothing. argument3 Required. Object. Evaluated and returned if argument2 evaluates to Nothing. 

जब बूलियन तर्क छोड़ दिया जाता है, तो पहला तर्क एक संदर्भ या नल योग्य प्रकार होना चाहिए। अगर पहली तर्क कुछ के मूल्यांकन नहीं करता है , तो दूसरा तर्क का मूल्य वापस आ जाता है अन्य सभी मामलों में, पहली तर्क का मूल्य वापस आ गया है। निम्न उदाहरण बताता है कि यह मूल्यांकन कैसे काम करता है

वीबी

 ' Variable first is a nullable type. Dim first? As Integer = 3 Dim second As Integer = 6 ' Variable first <> Nothing, so its value, 3, is returned. Console.WriteLine(If(first, second)) second = Nothing ' Variable first <> Nothing, so the value of first is returned again. Console.WriteLine(If(first, second)) first = Nothing second = 6 ' Variable first = Nothing, so 6 is returned. Console.WriteLine(If(first, second)) 

दो से अधिक मानों को संभाल करने का एक उदाहरण (नेस्टेड if ):

 Dim first? As Integer = Nothing Dim second? As Integer = Nothing Dim third? As Integer = 6 ' The LAST parameter doesn't have to be nullable. 'Alternative: Dim third As Integer = 6 ' Writes "6", because the first two values are "Nothing". Console.WriteLine(If(first, If(second, third))) 

आप एक एक्सटेंशन विधि का उपयोग कर सकते हैं। यह एक एसक्यूएल COALESCE तरह काम करता है और संभवत: आप जो परीक्षण करने की कोशिश कर रहे हैं, उसके लिए अतिरेक है, लेकिन यह काम करता है।

  ''' <summary> ''' Returns the first non-null T based on a collection of the root object and the args. ''' </summary> ''' <param name="obj"></param> ''' <param name="args"></param> ''' <returns></returns> ''' <remarks>Usage ''' Dim val as String = "MyVal" ''' Dim result as String = val.Coalesce(String.Empty) ''' *** returns "MyVal" ''' ''' val = Nothing ''' result = val.Coalesce(String.Empty, "MyVal", "YourVal") ''' *** returns String.Empty ''' ''' </remarks> <System.Runtime.CompilerServices.Extension()> _ Public Function Coalesce(Of T)(ByVal obj As T, ByVal ParamArray args() As T) As T If obj IsNot Nothing Then Return obj End If Dim arg As T For Each arg In args If arg IsNot Nothing Then Return arg End If Next Return Nothing End Function 

अंतर्निहित If(nullable, secondChoice) केवल दो नल योग्य विकल्पों को संभाल सकते हैं यहां, कोई वांछित के रूप में कई पैरामीटर Coalesce कर सकता है पहले गैर-रिक्त को लौटा दिया जाएगा, और बाकी मापदंडों का मूल्यांकन उसके बाद नहीं किया जाएगा (शॉर्ट सर्किट, जैसे AndAlso / एंड OrElse / || )

इनमें से अधिकांश समाधानों की एक महत्वपूर्ण सीमा यह है कि वे शॉर्ट-सर्किट नहीं करेंगे वे वास्तव में बराबर नहीं हैं ??

अंतर्निर्मित "अगर" ऑपरेटर, बाद के पैरामीटर का मूल्यांकन नहीं करेगा, जब तक कि पहले पैरामीटर कुछ भी नहीं मूल्यांकन करता है।

निम्न कथन समतुल्य हैं।

सी#

 var value = expression1 ?? expression2 ?? expression3 ?? expression4; 

वीबी

 dim value = if(exression1,if(expression2,if(expression3,expression4))) 

यह सभी मामलों में काम करेगा जहां "????" काम करता है। अन्य समाधानों में से कोई भी अत्यधिक सावधानी के साथ प्रयोग किया जाना चाहिए, क्योंकि वे आसानी से रन-टाइम कीड़े पेश कर सकते थे।