Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ตัวดำเนินการ C# ใดที่จัดเตรียมไว้เพื่อจัดการกับค่า Null


C# มีโอเปอเรเตอร์สามตัวต่อไปนี้เพื่อจัดการกับค่า null -

ตัวดำเนินการการรวมค่า null (??)

ช่วยให้คุณได้รับค่าของตัวแปรหากไม่ใช่ค่าว่าง หรือระบุค่าเริ่มต้นที่สามารถใช้ได้

มันแทนที่นิพจน์ต่อไปนี้ใน 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();
   }
}

ตัวดำเนินการเงื่อนไข null (?.)

โอเปอเรเตอร์นี้อนุญาตให้คุณเรียกใช้เมธอดบนอินสแตนซ์ได้อย่างปลอดภัย หากอินสแตนซ์เป็น null จะส่งกลับค่า null แทนที่จะส่ง 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