खोज…


अगर तब या

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

अगर ऑपरेटर

9.0
If(condition > value, "True", "False")

हम If के बजाय if संचालक का उपयोग कर सकते हैं ... तब ... Else..और यदि कथन ब्लॉक होता है।

निम्नलिखित उदाहरण पर विचार करें:

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

के समान है

MsgBox(If(10 > 9, "True", "False"))

If() शॉर्ट-सर्किट मूल्यांकन का उपयोग करता है, जिसका अर्थ है कि यह केवल उन तर्कों का मूल्यांकन करेगा जो इसका उपयोग करता है। यदि स्थिति झूठी है (या Nullable कि Nothing ), पहले विकल्प का मूल्यांकन बिल्कुल भी नहीं किया जाएगा, और इसका कोई भी दुष्प्रभाव नहीं देखा जाएगा। यह प्रभावी रूप से condition?a:b रूप में C # के टर्नरी ऑपरेटर के समान है condition?a:b

अपवादों से बचने में यह विशेष रूप से उपयोगी है:

Dim z As Integer = If(x = 0, 0, y/x)

हम सभी जानते हैं कि शून्य से विभाजित करना एक अपवाद होगा, लेकिन If() यहां केवल उस अभिव्यक्ति के लिए शॉर्ट-सर्कुलेटिंग के खिलाफ गार्ड है जो शर्त पहले ही सुनिश्चित कर चुका है तो वैध है।

एक और उदाहरण:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

यदि varString <> "N/A" करने के लिए मूल्यांकन करता False , यह आवंटित करेगा varDate के रूप में मूल्य Now.Date पहली अभिव्यक्ति का मूल्यांकन के बिना।

9.0

VB के पुराने संस्करणों में IF If() ऑपरेटर नहीं है और इसे IIf() अंतर्निहित फ़ंक्शन के साथ करना है। जैसा कि यह एक फ़ंक्शन है, ऑपरेटर नहीं, यह शॉर्ट-सर्किट नहीं करता है; सभी अभिव्यक्तियों का मूल्यांकन सभी संभावित दुष्प्रभावों के साथ किया जाता है, जिसमें प्रदर्शन दंड, राज्य बदलना और अपवाद फेंकना शामिल हैं। (उपरोक्त दोनों उदाहरण जो अपवाद से बचते हैं यदि IIf परिवर्तित हो जाते हैं।) यदि इनमें से कोई भी साइड इफेक्ट एक समस्या पेश करता है, तो इनलाइन सशर्त का उपयोग करने का कोई तरीका नहीं है; इसके बजाय, If..Then को हमेशा की तरह ब्लॉक करें।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow