C# में नल मानों से निपटने के लिए निम्नलिखित तीन ऑपरेटर हैं −
नल-कोलेसिंग ऑपरेटर (??)
यह आपको किसी वेरिएबल का मान प्राप्त करने की अनुमति देता है यदि वह नल नहीं है, अन्यथा एक डिफ़ॉल्ट मान निर्दिष्ट करता है जिसका उपयोग किया जा सकता है।
यह C# में निम्न अभिव्यक्ति को प्रतिस्थापित करता है −
string resultOne = value != null ? value : "default_value";
निम्न अभिव्यक्ति के साथ −
string resultTwo = value ?? "default_value";
यहां एक उदाहरण है जो इसे दर्शाता है।
उदाहरण
using System; class Program{ static void Main(){ string input = null; string choice = input ?? "default_choice"; Console.WriteLine(choice); // default_choice string finalChoice = choice ?? "not_chosen"; Console.WriteLine(finalChoice); // default_choice } }नल-कोलेसिंग असाइनमेंट ऑपरेटर (??=)
यदि बाईं ओर का मान नल नहीं है तो यह उसे लौटाता है। अन्यथा, यह दाईं ओर का मान लौटाता है। दूसरे शब्दों में, यह आपको एक वेरिएबल को कुछ डिफ़ॉल्ट मान से आरंभ करने की अनुमति देता है यदि उसका वर्तमान मान नल है।
यह C# में निम्न अभिव्यक्ति को प्रतिस्थापित करता है −
if (result == null) result = "default_value";
निम्न अभिव्यक्ति के साथ।
result ??= "default_value";
यह ऑपरेटर आलसी गणना वाले गुणों के साथ उपयोगी है। उदाहरण के लिए −
उदाहरण
class Tax{ private Report _lengthyReport; public Report LengthyReport => _lengthyReport ??= CalculateLengthyReport(); private Report CalculateLengthyReport(){ return new Report(); } }नल-कंडीशनल ऑपरेटर (?.)
यह ऑपरेटर आपको किसी इंस्टेंस पर एक मेथड को सुरक्षित रूप से कॉल करने की अनुमति देता है। यदि इंस्टेंस नल है, तो यह NullReferenceException फेंकने के बजाय नल लौटाता है। अन्यथा, यह बस मेथड को कॉल करता है।
यह C# में निम्न अभिव्यक्ति को प्रतिस्थापित करता है −
string result = instance == null ? null : instance.Method();
निम्न अभिव्यक्ति के साथ −
string result = instance?.Method();
निम्न उदाहरण पर विचार करें।
उदाहरण
using System; string input = null; string result = input?.ToString(); Console.WriteLine(result); // prints nothing (null)
उदाहरण
using System; class Program{ static void Main(){ string input = null; string choice = input ?? "default_choice"; Console.WriteLine(choice); // default_choice string finalChoice = choice ?? "not_chosen"; Console.WriteLine(finalChoice); // default_choice string foo = null; string answer = foo?.ToString(); Console.WriteLine(answer); // prints nothing (null) } }आउटपुट
default_choice default_choice