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());
}
}
ลักษณะของ Nullable Types
สามารถกำหนดค่าค่าว่างให้กับตัวแปรได้โดยไม่ต้องสร้าง Nullable Types
ใน Nullable Types สามารถกำหนดค่าให้กับประเภท nullable ได้เช่นกัน
class GFG {
static public void Main()
{
int ? a = null;
int ? b = 2345;
Console.WriteLine(a);
Console.WriteLine(b);
}
}
สามารถใช้ Nullable.HasValue และ Nullable.Value เพื่อตรวจสอบค่า ถ้า object กำหนดค่าไว้ ก็จะส่งคืนค่า True และถ้า object กำหนดค่าเป็นค่าว่าง ก็จะส่งคืนค่า False ถ้า object ไม่ได้รับการกำหนดค่า ก็จะเกิดข้อผิดพลาดเวลาคอมไพล์
class GFG {
static void Main()
{
Nullable<int> a = null;
Console.WriteLine(a.HasValue);
Nullable<int> b = 7;
Console.WriteLine(b.HasValue);
}
}
สามารถใช้ == และ ! กับ Nullable Type ได้
ใช้method GetValueOrDefault(T) เพื่อรับค่าที่กำหนดหรือค่าที่ให้มาได้ ถ้าค่าของ Nullable Type คือ null
สามารถใช้ null-coalescing operator (??) เพื่อกำหนดค่าประเภทพื้นฐานซึ่งมีต้นกำเนิดมาจากค่าของ nullable type
class GFG {
static public void Main()
{
int ? a = null;
int b = a ?? 3;
Console.WriteLine(b);
}
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<>
int? num = null;
Nullable<int> num = null;
Presentation (slides)
Clip
แหล่งอ้างอิง
Last updated