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