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