Nullable Types
ฐิติรัตน์ หล่อเจริญ 650710215
Nullable Types ใน C# คือชนิดข้อมูลที่สามารถเก็บค่า null ได้ ถึงจะเป็นชนิดข้อมูลแบบ value types เช่น int, double, หรือ bool ซึ่งปกติไม่สามารถมีค่า null ได้
วิธีการเข้าถึงค่าของตัวแปรแบบ Nullable
สามารถใช้เมธอด GetValueOrDefault() เพื่อรับค่า หากไม่ใช่ค่า null จะได้รับค่า แต่ถ้าเป็นค่า null ค่าเริ่มต้นสำหรับค่า null จะเป็น 0
class Geeks {
static void Main(string[] args)
{
Nullable<int> n = null;
Console.WriteLine(n.GetValueOrDefault());
int? n1 = null;
Console.WriteLine(n1.GetValueOrDefault());
int? n2 = 47;
Console.WriteLine(n2.GetValueOrDefault());
Nullable<int> n3 = 457;
Console.WriteLine(n3.GetValueOrDefault());
}
} 0
0
47
457ลักษณะของ Nullable Types
สามารถกำหนดค่าค่าว่างให้กับตัวแปรได้โดยไม่ต้องสร้าง Nullable Types
ใน Nullable Types สามารถกำหนดค่าให้กับประเภท nullable ได้เช่นกัน
2345
สามารถใช้ Nullable.HasValue และ Nullable.Value เพื่อตรวจสอบค่า ถ้า object กำหนดค่าไว้ ก็จะส่งคืนค่า True และถ้า object กำหนดค่าเป็นค่าว่าง ก็จะส่งคืนค่า False ถ้า object ไม่ได้รับการกำหนดค่า ก็จะเกิดข้อผิดพลาดเวลาคอมไพล์
สามารถใช้ == และ ! กับ Nullable Type ได้
ใช้method GetValueOrDefault(T) เพื่อรับค่าที่กำหนดหรือค่าที่ให้มาได้ ถ้าค่าของ Nullable Type คือ null
สามารถใช้ null-coalescing operator (??) เพื่อกำหนดค่าประเภทพื้นฐานซึ่งมีต้นกำเนิดมาจากค่าของ nullable type
Nullable Types ไม่สนับสนุน Nullable Types แบบซ้อนกัน
ไม่รองรับ var type หากใช้ Nullable กับ var คอมไพเลอร์จะเกิดข้อผิดพลาดเวลาคอมไพล์
ข้อดี
การใช้งานหลักของ Nullable Types คือในแอปพลิเคชันฐานข้อมูล
มีประโยชน์ในการแสดงค่าที่ไม่ได้กำหนด(undefined value)
ใช้ Nullable Types แทนเพื่อเก็บค่า null
การเปรียบเทียบกับภาษา Java/C/Python
Nullable Types ใน C# สามารถใช้เครื่องหมาย ? ตามหลังชนิดข้อมูลเพื่อระบุว่าเป็น nullable type เช่น int? หรือใช้โครงสร้าง Nullanle<>
ใน Java null สามารถใช้ได้กับออบเจกต์ทุกประเภท แต่ไม่สามารถใช้กับชนิดข้อมูลพื้นฐาน (เช่น
int, boolean) ได้โดยตรงJava แนะนำ optional ตั้งแต่ ver 8 สำหรับจัดการกับค่าที่อาจจะเป็น null
C ใช้ Null สำหรับ pointer เท่านั้น ไม่มี Nullable Types สำหรับชนิดข้อมูลโดยตรง
ใช้ null เพื่อตรวจสอบว่า pointer ไม่ได้ชี้ไปที่ไหน
Python ใช้ None สำหรับการแทนค่าที่เป็น null และสามารถใช้ได้กับชนิดข้อมูลทุกประเภท
Presentation (slides)
Clip
แหล่งอ้างอิง
Last updated
