0Pricing
C# Academy · บทเรียน

แนะนำชนิดค่าที่เป็น Nullable

ประกาศ int?, double? และทำความเข้าใจ Nullable

แนะนำชนิดค่าที่เป็น Nullable เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

ชนิดค่าไม่สามารถเป็นค่าว่างได้

โดยปกติ int จะเก็บตัวเลขไว้เสมอ และไม่สามารถเป็น null ได้ บางครั้งคุณจำเป็นต้องแสดงถึงการไม่มีค่า เช่น กรณีที่ไม่มีข้อมูลการวัด

using System;

class Program {
    static void Main() {
        int count = 0;
        Console.WriteLine(count);
    }
}

ชนิดที่รองรับค่าว่างด้วย ?

เติม ? หลังชนิดค่าเพื่อทำให้ชนิดนั้นรองรับค่าว่าง int? สามารถเก็บค่า int ใดก็ได้ หรือ null

using System;

class Program {
    static void Main() {
        int? maybe = null;
        Console.WriteLine(maybe.HasValue);
        maybe = 42;
        Console.WriteLine(maybe);
    }
}

ชนิดค่าอื่นที่รองรับค่าว่าง

ชนิดค่าใด ๆ ก็สามารถรองรับค่าว่างได้ เช่น double?, bool?, DateTime? และอื่น ๆ

using System;

class Program {
    static void Main() {
        double? temp = null;
        bool? flag = true;
        Console.WriteLine(temp.HasValue + " " + flag);
    }
}

การเขียน Nullable<T> แบบเต็ม

int? เป็นเพียงรูปย่อของโครงสร้าง Nullable<int> เท่านั้น ทั้งสองรูปแบบจะคอมไพล์เป็นชนิดเดียวกันทุกประการ

using System;

class Program {
    static void Main() {
        Nullable<int> a = 10;
        int? b = 10;
        Console.WriteLine(a == b);
    }
}

การกำหนดค่าว่าง

คุณสามารถกำหนด null ให้ตัวแปรที่รองรับค่าว่างได้โดยตรง และกำหนดค่าจริงใหม่ในภายหลังได้

using System;

class Program {
    static void Main() {
        int? id = 100;
        Console.WriteLine(id);
        id = null;
        Console.WriteLine(id.HasValue);
    }
}

การพิมพ์ค่าที่รองรับค่าว่างซึ่งเป็นค่าว่าง

การพิมพ์ค่าที่รองรับค่าว่างซึ่งเป็น null จะให้สตริงว่าง ไม่ใช่คำว่า ค่าว่าง

using System;

class Program {
    static void Main() {
        int? value = null;
        Console.WriteLine("[" + value + "]");
    }
}

การแปลงเป็นชนิดที่รองรับค่าว่างโดยนัย

int ธรรมดาจะแปลงเป็น int? โดยอัตโนมัติ เพราะค่า int ทุกค่าถือเป็นค่า int ที่รองรับค่าว่างได้

using System;

class Program {
    static void Main() {
        int x = 7;
        int? y = x;
        Console.WriteLine(y);
    }
}

ชนิดที่รองรับค่าว่างในค่าที่เมธอดส่งคืน

เมธอดสามารถส่งคืนชนิดที่รองรับค่าว่าง เพื่อสื่อว่าพบค่าหรือไม่พบค่า

using System;

class Program {
    static int? FindEven(int[] nums) {
        foreach (int n in nums)
            if (n % 2 == 0) return n;
        return null;
    }
    static void Main() {
        Console.WriteLine(FindEven(new[] {1, 3, 4}));
    }
}

การเปรียบเทียบชนิดที่รองรับค่าว่าง

การตรวจสอบความเท่ากันทำงานตามที่คาดไว้: ค่าที่รองรับค่าว่างสองค่าจะเท่ากันเมื่อทั้งคู่เป็นค่าว่าง หรือทั้งคู่มีค่าเดียวกัน

using System;

class Program {
    static void Main() {
        int? a = null;
        int? b = null;
        Console.WriteLine(a == b);
        int? c = 5;
        Console.WriteLine(c == 5);
    }
}

เหตุผลที่ใช้ชนิดที่รองรับค่าว่าง

ชนิดค่าที่รองรับค่าว่างช่วยจำลองข้อมูลที่อาจมีหรือไม่มีก็ได้อย่างเป็นระเบียบ เช่น คอลัมน์ฐานข้อมูลที่อนุญาตให้เป็น NULL หรือฟิลด์ที่ผู้ใช้ปล่อยว่างไว้

using System;

class Program {
    static void Main() {
        int? userAge = null;
        string msg = userAge.HasValue ? "Age set" : "Age unknown";
        Console.WriteLine(msg);
    }
}

ชนิดที่รองรับค่าว่างเป็นโครงสร้าง

Nullable<T> เองเป็นชนิดค่า ดังนั้นตัวแปรที่รองรับค่าว่างจึงไม่ใช่ชนิดอ้างอิง แม้ว่าจะเป็นค่าว่างได้ก็ตาม

using System;

class Program {
    static void Main() {
        int? n = 3;
        Console.WriteLine(n.GetType().Name);
    }
}

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับชนิดค่าที่รองรับค่าว่าง

สรุปทบทวน

ชนิดค่าอย่าง int ไม่สามารถเป็นค่าว่างได้โดยปริยาย การเติม ? จะสร้างชนิดที่รองรับค่าว่าง (int?) ซึ่งเป็นรูปย่อของ Nullable<T>

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

คำถามที่พบบ่อย

บทเรียน “แนะนำชนิดค่าที่เป็น Nullable” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แนะนำชนิดค่าที่เป็น Nullable” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แนะนำชนิดค่าที่เป็น Nullable”

ประกาศ int?, double? และทำความเข้าใจ Nullable คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “แนะนำชนิดค่าที่เป็น Nullable” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แนะนำชนิดค่าที่เป็น Nullable
  2. คุณสมบัติ HasValue และ Value
  3. ตัวดำเนินการรวมค่าเมื่อเป็น Null
  4. Nullable ในการคำนวณ
← กลับไปที่ C# Academy