คุณสมบัติ HasValue และ Value
ตรวจสอบและเข้าถึงค่า Nullable อย่างปลอดภัย
คุณสมบัติ HasValue และ Value เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณสมบัติสำคัญสองประการ
ค่าที่รองรับค่าว่างทุกค่าจะมี HasValue (ชนิด bool) และ Value (ค่าพื้นฐาน) ทั้งสองอย่างนี้เป็นเครื่องมือสำหรับตรวจสอบค่าอย่างปลอดภัย
using System;
class Program {
static void Main() {
int? n = 5;
Console.WriteLine(n.HasValue);
Console.WriteLine(n.Value);
}
}HasValue ตรวจสอบการมีค่า
HasValue เป็น true เมื่อมีค่าจริงอยู่ และเป็น false เมื่อเป็นค่าว่าง
using System;
class Program {
static void Main() {
int? a = 10;
int? b = null;
Console.WriteLine(a.HasValue);
Console.WriteLine(b.HasValue);
}
}การอ่าน Value อย่างปลอดภัย
ตรวจสอบ HasValue ก่อนอ่าน Value เสมอ เพราะการอ่าน Value ขณะที่เป็นค่าว่างจะทำให้เกิดข้อยกเว้น
using System;
class Program {
static void Main() {
int? n = 42;
if (n.HasValue) {
Console.WriteLine(n.Value * 2);
}
}
}การเข้าถึง Value ขณะเป็นค่าว่างทำให้เกิดข้อยกเว้น
หากคุณอ่าน Value ขณะที่ค่าที่รองรับค่าว่างเป็นค่าว่าง C# จะทำให้เกิด InvalidOperationException การตรวจสอบจะช่วยป้องกันปัญหานี้
using System;
class Program {
static void Main() {
int? n = null;
try {
Console.WriteLine(n.Value);
} catch (InvalidOperationException) {
Console.WriteLine("Caught: no value");
}
}
}GetValueOrDefault
GetValueOrDefault() จะคืนค่าที่มีอยู่ หากไม่มีค่าจะคืนค่าเริ่มต้นของชนิดนั้น (0 สำหรับ int และเท็จสำหรับ bool)
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n.GetValueOrDefault());
}
}GetValueOrDefault พร้อมค่าสำรอง
ส่งอาร์กิวเมนต์เพื่อเลือกค่าสำรองของคุณเอง: GetValueOrDefault(99) จะคืนค่า 99 เมื่อเป็นค่าว่าง
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n.GetValueOrDefault(99));
int? m = 7;
Console.WriteLine(m.GetValueOrDefault(99));
}
}รูปแบบ: ตรวจสอบก่อนแล้วจึงใช้
รูปแบบที่ใช้กันทั่วไปคือการรวม HasValue และ Value เข้ากับแขนงการทำงานที่กระชับและชัดเจน
using System;
class Program {
static void Describe(int? score) {
if (score.HasValue)
Console.WriteLine("Score is " + score.Value);
else
Console.WriteLine("No score yet");
}
static void Main() {
Describe(88);
Describe(null);
}
}การแปลงกลับโดยนัย
คุณสามารถกำหนดค่าที่รองรับค่าว่างให้ชนิดค่าธรรมดาได้หลังจากยืนยันแล้วว่ามีค่า จากนั้นจึงอ่าน Value
using System;
class Program {
static void Main() {
int? maybe = 15;
if (maybe.HasValue) {
int real = maybe.Value;
Console.WriteLine(real + 5);
}
}
}ค่าเริ่มต้นของชนิดที่รองรับค่าว่าง
ค่าที่รองรับค่าว่างซึ่งไม่ได้กำหนดค่าไว้อย่างชัดเจนจะมีค่าเริ่มต้นเป็นค่าว่าง ดังนั้น HasValue จึงเป็น false
using System;
class Program {
static void Main() {
int? n = default;
Console.WriteLine(n.HasValue);
}
}การใช้งานในการรวมค่า
วนซ้ำข้อมูล โดยข้ามค่าที่เป็นค่าว่างด้วย HasValue เพื่อคำนวณผลรวมอย่างปลอดภัย
using System;
class Program {
static void Main() {
int?[] readings = { 10, null, 5, null, 8 };
int sum = 0;
foreach (var r in readings)
if (r.HasValue) sum += r.Value;
Console.WriteLine(sum);
}
}GetValueOrDefault ในลูป
GetValueOrDefault ช่วยทำให้โค้ดกระชับขึ้นในกรณีที่ควรถือว่าค่าว่างมีค่าเป็นศูนย์
using System;
class Program {
static void Main() {
int?[] readings = { 10, null, 5 };
int sum = 0;
foreach (var r in readings)
sum += r.GetValueOrDefault();
Console.WriteLine(sum);
}
}ตรวจสอบความเข้าใจ
ทดสอบความรู้ของคุณเกี่ยวกับคุณสมบัติของชนิดที่รองรับค่าว่าง
สรุปทบทวน
HasValue บอกว่าค่าที่รองรับค่าว่างมีค่าหรือไม่ และ Value ใช้ดึงค่านั้นออกมา แต่การอ่าน Value ขณะที่เป็นค่าว่างจะทำให้เกิดข้อยกเว้น
GetValueOrDefault() จะคืนค่าหรือค่าสำรองอย่างปลอดภัย โดยใช้ค่าเริ่มต้นของชนิดนั้นหรือค่าที่คุณระบุ จึงเหมาะสำหรับการหาผลรวมและการอ่านค่าอย่างปลอดภัย
คำถามที่พบบ่อย
บทเรียน “คุณสมบัติ HasValue และ Value” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คุณสมบัติ HasValue และ Value” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คุณสมบัติ HasValue และ Value”
ตรวจสอบและเข้าถึงค่า Nullable อย่างปลอดภัย คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “คุณสมบัติ HasValue และ Value” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนะนำชนิดค่าที่เป็น Nullable
- คุณสมบัติ HasValue และ Value
- ตัวดำเนินการรวมค่าเมื่อเป็น Null
- Nullable ในการคำนวณ