C# में टर्नरी ऑपरेटर ?:
टर्नरी ऑपरेटर एकमात्र ऑपरेटर है जो **तीन ऑपरेंड्स** लेता है। यह एक संक्षिप्त if-else एक्सप्रेशन है जो एक वैल्यू लौटाता है।
सिंटैक्स
condition ? expression_if_true : expression_if_false
कैसे काम करता है
conditionका मूल्यांकन होता है (बूलियन)।trueहोने परexpression_if_trueमूल्यांकित होता है और उसका मान परिणाम होता है।falseहोने परexpression_if_falseमूल्यांकित होता है और उसका मान परिणाम होता है।- केवल **आवश्यक एक्सप्रेशन** ही मूल्यांकित होता है (शॉर्ट-सर्किट)।
उदाहरण
using System;
class Program {
static void Main() {
int a = 10;
// बेसिक उपयोग
int b = (a == 1) ? 20 : 30;
Console.WriteLine($"b = {b}"); // 30 (क्योंकि a != 1)
b = (a == 10) ? 20 : 30;
Console.WriteLine($"b = {b}"); // 20 (क्योंकि a == 10)
// नेस्टेड टर्नरी (सावधानी से उपयोग करें)
int score = 85;
string grade = score >= 90 ? "A" :
score >= 80 ? "B" :
score >= 70 ? "C" : "F";
Console.WriteLine($"Grade: {grade}"); // B
// नल कोलिसिंग के साथ कॉम्बिनेशन
string name = null;
string displayName = name ?? "Guest"; // नल कोलिसिंग (??) अलग ऑपरेटर है
Console.WriteLine(displayName); // Guest
}
}
आउटपुट
b = 30 b = 20 Grade: B Guest
टर्नरी vs if-else
| पहलू | Ternary ?: | if-else स्टेटमेंट |
|---|---|---|
| रिटर्न वैल्यू | हां (एक्सप्रेशन) | नहीं (स्टेटमेंट) |
| उपयोग | वेरिएबल असाइनमेंट, रिटर्न, आर्गुमेंट | कंट्रोल फ्लो, मल्टीपल स्टेटमेंट्स |
| पठनीयता | सरल कंडीशन्स के लिए अच्छी | जटिल लॉजिक के लिए बेहतर |
| नेस्टिंग | मुश्किल से पढ़ा जाता है | स्पष्ट |
बेस्ट प्रैक्टिसेज
- सरल, सिंगल-लाइन कंडीशन्स के लिए उपयोग करें।
- नेस्टेड टर्नरी से बचें;
if-else if-elseयाswitchउपयोग करें। - दोनों ब्रांचेज का टाइप संगत होना चाहिए (कॉमन बेस टाइप या इम्प्लिसिट कन्वर्जन)।
- साइड इफेक्ट्स (मेथड कॉल्स) से सावधान रहें; केवल एक ब्रांच चलता है।
नल कोलिसिंग ऑपरेटर ?? (संबंधित)
string result = possiblyNull ?? "default"; // अगर null तो "default" // बराबर: possiblyNull != null ? possiblyNull : "default"