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

วิธีใช้ Null Coalescing Operator (??) ใน C#

Null Coalescing Operator (??) ใน C#

ตัวดำเนินการ ?? (Null-coalescing operator) ใช้สำหรับให้ค่าเริ่มต้น (default value) เมื่อค่าซ้ายเป็น null ทำงานกับ nullable value types และ reference types

หลักการทำงาน

result = leftExpression ?? rightExpression;
  • ถ้า leftExpression ไม่เป็น null → คืนค่า leftExpression
  • ถ้า leftExpression เป็น null → คืนค่า rightExpression

ตัวอย่างโค้ดสมบูรณ์

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            double? num1 = null;
            double? num2 = 6.32123;
            double num3;
            
            // num1 เป็น null → ใช้ค่า 9.77
            num3 = num1 ?? 9.77;
            Console.WriteLine("ค่าของ num3: {0}", num3); // 9.77
            
            // num2 ไม่เป็น null → ใช้ค่า num2
            num3 = num2 ?? 9.77;
            Console.WriteLine("ค่าของ num3: {0}", num3); // 6.32123
            
            // ใช้กับ reference type
            string name = null;
            string displayName = name ?? "Guest";
            Console.WriteLine(displayName); // Guest
            
            Console.ReadLine();
        }
    }
}

ผลลัพธ์

ค่าของ num3: 9.77
ค่าของ num3: 6.32123
Guest

Null-coalescing Assignment (??=) - C# 8.0+

// กำหนดค่าเฉพาะเมื่อตัวแปรเป็น null
string name = null;
name ??= "Default Name"; // เทียบเท่า: if (name == null) name = "Default Name";
Console.WriteLine(name); // Default Name

การเชื่อมต่อหลายตัว (Chaining)

string result = first ?? second ?? third ?? "Default";
// คืนค่าแรกที่ไม่ใช่ null

ความแตกต่างจาก Ternary Operator

คุณสมบัติ ?? Operator Ternary (?:)
ความกระชับ สูง ต่ำกว่า
ประเมินซ้ายเพียงครั้งเดียว ✅ ❌ (อาจประเมินซ้ำ)
ทำงานกับ nullable types ✅ ✅

กรณีการใช้งานทั่วไป

  • ให้ค่าเริ่มต้นสำหรับการตั้งค่า (configuration)
  • จัดการค่า null จาก database หรือ API
  • Lazy initialization
  • Fallback chain สำหรับค่าที่อาจเป็น null