มันคือ null-coalescing โอเปอเรเตอร์ ตัวดำเนินการ null-coalescing ?? ส่งกลับค่าของตัวถูกดำเนินการทางซ้ายถ้าไม่เป็นค่าว่าง มิฉะนั้น จะประเมินตัวถูกดำเนินการทางขวาและส่งคืนผลลัพธ์ ที่ ?? โอเปอเรเตอร์จะไม่ประเมินตัวถูกดำเนินการทางขวา หากตัวถูกดำเนินการทางซ้ายประเมินว่าไม่ใช่ค่าว่าง
ประเภทที่เป็นค่าว่างสามารถแสดงค่าที่ไม่สามารถกำหนดได้หรือจากโดเมนของประเภท เราสามารถใช้ ?? โอเปอเรเตอร์เพื่อคืนค่าที่เหมาะสมเมื่อตัวถูกดำเนินการทางซ้ายมีประเภทที่เป็นค่าว่าง หากเราพยายามกำหนดประเภทค่าที่เป็น null ให้กับประเภทค่าที่ไม่เป็นค่าว่างได้โดยไม่ต้องใช้ ?? โอเปอเรเตอร์ เราจะได้รับข้อผิดพลาดในการคอมไพล์ และหากเราส่งมันอย่างจริงจัง ข้อยกเว้น InvalidOperationException จะถูกส่งออกไป
ต่อไปนี้เป็นข้อดีของตัวดำเนินการ Null-Coalescing Operator (??) -
-
ใช้เพื่อกำหนดค่าเริ่มต้นสำหรับรายการที่เป็นโมฆะ (สำหรับทั้งประเภทค่าและประเภทการอ้างอิง)
-
มันป้องกันข้อยกเว้น InvalidOperationException รันไทม์
-
ช่วยให้เราลบเงื่อนไข "if" ที่ซ้ำซ้อนได้มากมาย
-
ใช้ได้กับทั้งประเภทอ้างอิงและประเภทค่า
-
รหัสได้รับการจัดระเบียบอย่างดีและอ่านง่าย
ตัวอย่าง
using System; namespace MyApplication{ class Program{ static void Main(string[] args){ int? value1 = null; int value2 = value1 ?? 99; Console.WriteLine("Value2: " + value2); string testString = "Null Coalescing"; string resultString = testString ?? "Original string is null"; Console.WriteLine("The value of result message is: " + resultString); } } }
ผลลัพธ์
ผลลัพธ์ของตัวอย่างข้างต้นมีดังนี้
Value2: 99 The value of result message is: Null Coalescing