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

เครื่องหมายคำถามสองข้อรวมกัน (??) หมายถึงอะไรใน C #


มันคือ 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