2009-03-10 17 views
12

संभव डुप्लिकेट:
Is there a conditional ternary operator in VB.NET?संगठित होना ऑपरेटर और VB.NET में सशर्त ऑपरेटर

हाय दोस्तों, हम उपयोग कर सकते हैं संगठित होना ऑपरेटर (??) और सशर्त त्रिगुट ऑपरेटर (:) वी # एनईटी में सी # में?

+7

यह एक डुप्लिकेट सवाल नहीं है। इस प्रश्न में नल-कोलेसिंग ऑपरेटर शामिल है। –

+2

परिवर्तित करने के लिए ?? वीबीनेट उपयोग के लिए यदि (:) दो पैरामीटर के साथ उल्लेख किया गया है [यहां] (http://stackoverflow.com/a/6792791/521554) – LosManos

उत्तर

15

मुझे लगता है कि आप एक इनलाइन का उपयोग कर के साथ निकट प्राप्त कर सकते हैं बयान:

//C# 
int x = a ? b : c; 

'VB.Net 
Dim x as Integer = If(a, b, c) 
+3

* नोट: अगर कथन का उपयोग करके इस तरह से केवल VB.NET 2008 और बाद में लागू होता है। –

+0

एक (सहकर्मी ऑपरेटर के रूप में if() फ़ंक्शन का उपयोग करने के लिए, इसे केवल दो मानकों के साथ बुलाया जाना चाहिए, और इसका संदर्भ संदर्भ प्रकारों के लिए उपयोग किया जाना चाहिए: 'Dim objC = if (objA, objB)' यह objC को objA सेट करेगा जब तक ओब्जा कुछ भी नहीं है, उस स्थिति में ओबीजेसी ओबीजेबी पर सेट की जाएगी, चाहे वह कुछ भी न हो या नहीं। –

-3

हैं, तो बस में संदर्भ के लिए IIf

Dim x as Integer=IIf(a,b,c)

+6

नहीं। IIF सभी पैरामीटर का मूल्यांकन करता है क्योंकि यह एक नियमित कॉल है। Http://dotnetslackers.com/VB_NET/re-55021_IIF_becomes_If_and_a_true_ternary_operator.aspx – LosManos

3

होना चाहिए स्ट्रिंग

Private Function Coalesce(ByVal ParamArray Parameters As String()) As String 
    For Each Parameter As String In Parameters 
     If Not Parameter Is Nothing Then 
      Return Parameter 
     End If 
    Next 
    Return Nothing 
End Function 
के लिए ऑपरेटर सम्मिलित
12
Sub Main() 
    Dim x, z As Object 
    Dim y As Nullable(Of Integer) 
    z = "1243" 

    Dim c As Object = Coalesce(x, y, z) 
End Sub 

Private Function Coalesce(ByVal ParamArray x As Object()) 
    Return x.First(Function(y) Not IsNothing(y)) 
End Function 
+0

LINQ का उपयोग करके देखें, यह सबसे प्रभावी 'Coalesce() 'कार्यान्वयन है। – miroxlav

+2

इस (और ivan के नीचे) के साथ समस्या यह है कि सभी मानकों का मूल्यांकन किया जाएगा। इसलिए, अगर मैं 'डिम चीज़ी = कोलेसेस (सत्र ("चीज़ी"), नई थिंगी लिखता हूं)' हर समय एक नई थिंगी ऑब्जेक्ट बनाई जाएगी (हालांकि सत्र में थिंगी मौजूद होने पर इसे फेंक दिया जाएगा) –

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