แนะนำชนิดค่าที่เป็น 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนะนำชนิดค่าที่เป็น Nullable
- คุณสมบัติ HasValue และ Value
- ตัวดำเนินการรวมค่าเมื่อเป็น Null
- Nullable ในการคำนวณ