ตัวดำเนินการรวมค่าเมื่อเป็น Null
ใช้ ?? และ ??= เพื่อจัดเตรียมค่าทดแทน
ตัวดำเนินการรวมค่าเมื่อเป็น Null เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวดำเนินการรวมค่าว่าง ??
ตัวดำเนินการรวมค่าว่าง ?? จะคืนค่าตัวถูกดำเนินการด้านซ้ายหากไม่ใช่ค่าว่าง มิฉะนั้นจะคืนค่าตัวถูกดำเนินการด้านขวา นี่คือค่าสำรองแบบกระชับ
using System;
class Program {
static void Main() {
int? maybe = null;
int value = maybe ?? -1;
Console.WriteLine(value);
}
}?? เลือกค่าแรกที่ไม่ใช่ค่าว่าง
หากด้านซ้ายมีค่า ค่านั้นจะถูกเลือก และด้านขวาจะถูกข้ามไป
using System;
class Program {
static void Main() {
int? a = 7;
Console.WriteLine(a ?? 0);
}
}?? กับชนิดอ้างอิง
?? ใช้กับชนิดอ้างอิงอย่าง string ได้เช่นกัน เพื่อมอบข้อความเริ่มต้นเมื่อเป็นค่าว่าง
using System;
class Program {
static void Main() {
string name = null;
Console.WriteLine(name ?? "Guest");
}
}การเชื่อม ??
คุณสามารถเชื่อมค่าสำรองหลายค่าเข้าด้วยกันได้ โดยจะใช้ค่าแรกที่ไม่ใช่ค่าว่าง
using System;
class Program {
static void Main() {
string a = null, c = "third";
string b = null;
Console.WriteLine(a ?? b ?? c ?? "last");
}
}?? คืนค่าชนิดพื้นฐาน
เมื่อด้านซ้ายเป็น int? และด้านขวาเป็น int ผลลัพธ์จะเป็น int ปกติ เนื่องจากไม่สามารถเป็นค่าว่างได้อีกต่อไป
using System;
class Program {
static void Main() {
int? maybe = null;
int sure = maybe ?? 0;
Console.WriteLine(sure + 5);
}
}ตัวดำเนินการ ??=
การกำหนดค่าแบบรวมค่าว่าง ??= จะกำหนดค่าด้านขวา เฉพาะเมื่อ ด้านซ้ายเป็นค่าว่างอยู่ในขณะนั้น
using System;
class Program {
static void Main() {
int? count = null;
count ??= 10;
Console.WriteLine(count);
}
}??= คงค่าเดิมไว้
หากตัวแปรมีค่าอยู่แล้ว ??= จะไม่ทำอะไร
using System;
class Program {
static void Main() {
string config = "custom";
config ??= "default";
Console.WriteLine(config);
}
}การกำหนดค่าเริ่มต้นแบบประเมินเมื่อจำเป็นด้วย ??=
??= เหมาะอย่างยิ่งสำหรับกำหนดค่าในครั้งแรกและคงค่านั้นไว้หลังจากนั้น
using System;
class Program {
static string cache = null;
static string GetData() {
cache ??= "loaded";
return cache;
}
static void Main() {
Console.WriteLine(GetData());
Console.WriteLine(GetData());
}
}?? เทียบกับ GetValueOrDefault
ทั้งสองอย่างจัดเตรียมค่าใช้แทน แต่ ?? ยืดหยุ่นกว่า เพราะใช้กับชนิดอ้างอิงได้ และให้ค่าใช้แทนเป็นนิพจน์ใดก็ได้
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n ?? 5);
Console.WriteLine(n.GetValueOrDefault(5));
}
}?? ในอาร์กิวเมนต์ของเมธอด
ใช้ ?? แทรกในตำแหน่งที่ต้องการ เพื่อจัดเตรียมค่าเริ่มต้นตรงจุดที่ต้องใช้ค่า
using System;
class Program {
static void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
static void Main() {
string input = null;
Greet(input ?? "friend");
}
}พฤติกรรมการประเมินแบบลัดวงจร
ด้านขวาของ ?? จะถูกประเมินเฉพาะเมื่อด้านซ้ายเป็นค่าว่าง คล้ายกับการประเมินแบบลัดวงจร
using System;
class Program {
static int Compute() {
Console.WriteLine("Computed");
return 42;
}
static void Main() {
int? known = 1;
int result = known ?? Compute();
Console.WriteLine(result);
}
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับตัวดำเนินการรวมค่าว่าง
สรุปทบทวน
ตัวดำเนินการ ?? คืนค่าด้านซ้ายหากไม่ใช่ค่าว่าง มิฉะนั้นจะคืนค่าด้านขวา และสามารถเชื่อมต่อหลายตัวเข้าด้วยกันได้ ชนิดของผลลัพธ์จะไม่เป็นชนิดที่เป็นค่าว่างได้อีกเมื่อมีค่าใช้แทนที่ไม่เป็นค่าว่าง
??= จะกำหนดค่าเฉพาะเมื่อเป้าหมายเป็นค่าว่าง จึงเหมาะสำหรับค่าเริ่มต้นและการกำหนดค่าเริ่มต้นแบบประเมินเมื่อจำเป็น ทั้งสองตัวจะประเมินด้านขวาเฉพาะเมื่อจำเป็น
คำถามที่พบบ่อย
บทเรียน “ตัวดำเนินการรวมค่าเมื่อเป็น Null” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวดำเนินการรวมค่าเมื่อเป็น Null” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการรวมค่าเมื่อเป็น Null”
ใช้ ?? และ ??= เพื่อจัดเตรียมค่าทดแทน คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวดำเนินการรวมค่าเมื่อเป็น Null” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนะนำชนิดค่าที่เป็น Nullable
- คุณสมบัติ HasValue และ Value
- ตัวดำเนินการรวมค่าเมื่อเป็น Null
- Nullable ในการคำนวณ