รูปแบบเชิงสัมพันธ์และตรรกะ
รวมเงื่อนไขในรูปแบบ
รูปแบบเชิงสัมพันธ์และตรรกะ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
รูปแบบเชิงสัมพันธ์
รูปแบบเชิงสัมพันธ์จะเปรียบเทียบข้อมูลเข้ากับค่าคงที่โดยใช้ <, >, <= หรือ >= และจะตรงกันเมื่อผลการเปรียบเทียบเป็นจริง
รูปแบบเชิงสัมพันธ์เริ่มมีใน C# 9 ช่วยให้การตรวจสอบช่วงค่ากระชับขึ้นในแขนงสวิตช์และนิพจน์ is โดยไม่ต้องเขียนการเปรียบเทียบอย่างชัดเจน
int temp = 18;
string level = temp switch
{
< 0 => "freezing",
< 15 => "cold",
< 25 => "mild",
_ => "hot"
};
System.Console.WriteLine(level);รูปแบบเชิงสัมพันธ์ร่วมกับการตรวจสอบชนิด
รูปแบบเชิงสัมพันธ์ยังใช้ในนิพจน์ is ได้ ทำให้เขียนการตรวจสอบบูลีนได้อ่านง่าย
n is > 0 อ่านได้แทบเหมือนภาษาธรรมชาติและคืนค่าบูลีนที่คุณนำไปใช้ในเงื่อนไข การกำหนดค่า หรือเงื่อนไขกรองของ LINQ ได้
using System;
class Program {
static void Main() {
int score = 82;
bool passed = score is >= 60;
Console.WriteLine(passed);
}
}รูปแบบและ
รูปแบบตรรกะ and ต้องการให้รูปแบบย่อยทั้งสองรูปแบบตรงกัน จึงเหมาะอย่างยิ่งสำหรับช่วงค่าที่มีขอบเขต
>= 1 and <= 12 จะตรงกับค่าที่อยู่ในช่วง 1 ถึง 12 โดยรวมขอบเขตด้วย หากไม่มี and ก็จะไม่สามารถแสดงขอบเขตสองด้านในรูปแบบเดียวได้
int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);รูปแบบหรือ
รูปแบบตรรกะ or จะตรงกันเมื่อรูปแบบย่อยอย่างน้อยหนึ่งรูปแบบตรงกัน รูปแบบนี้ช่วยรวมค่าทางเลือกหลายค่าไว้ในแขนงเดียว
แทนที่จะเขียนแขนงซ้ำสำหรับกรณีที่เกี่ยวข้องกัน 'a' or 'e' or 'i' สามารถรวมกรณีเหล่านั้นเข้าด้วยกัน ทำให้นิพจน์สวิตช์กระชับและสื่อเจตนาได้ชัดเจน
char c = 'e';
string kind = c switch
{
'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
_ => "consonant"
};
System.Console.WriteLine(kind);รูปแบบไม่
รูปแบบตรรกะ not จะตรงกันเมื่อรูปแบบย่อยของมันไม่ตรงกัน การใช้งานที่พบบ่อยที่สุดคือ not null
รูปแบบนี้ยังปฏิเสธรูปแบบอื่นได้ เช่น not 0 หรือ not (> 100) ทำให้คุณแสดงค่าที่ต้องการยกเว้นได้อย่างชัดเจนภายในแขนงเดียว
object? value = "hi";
if (value is not null)
System.Console.WriteLine("present");การรวมรูปแบบตรรกะ
รูปแบบตรรกะสามารถประกอบเข้าด้วยกันได้ คุณสามารถเชื่อม and, or และ not เพื่อสร้างเงื่อนไขที่ซับซ้อน โดยใช้วงเล็บเพื่อควบคุมลำดับการประเมิน
ลำดับความสำคัญคือ not ผูกแน่นที่สุด ตามด้วย and และ or ตามลำดับ ควรใส่วงเล็บทุกครั้งเมื่อเจตนาอาจตีความได้ไม่ชัดเจน
using System;
class Program {
static string Classify(int n) => n switch {
< 0 or > 100 => "out of range",
>= 0 and <= 50 => "low half",
_ => "high half"
};
static void Main() => Console.WriteLine(Classify(75));
}ช่วงคะแนน
รูปแบบเชิงสัมพันธ์และรูปแบบตรรกะเมื่อนำมารวมกันสามารถจำลองตารางจัดระดับแบบดั้งเดิมได้อย่างชัดเจน
เนื่องจากระบบตรวจสอบแขนงจากบนลงล่าง คุณจึงใช้ขอบเขตด้านบนอย่างง่าย หรือรวมขอบเขตด้วย and เพื่อระบุช่วงอย่างชัดเจนก็ได้ ทั้งสองรูปแบบใช้ได้ เลือกรูปแบบที่อ่านเข้าใจง่ายกว่า
using System;
class Program {
static char Grade(int s) => s switch {
>= 90 => 'A',
>= 80 and < 90 => 'B',
>= 70 and < 80 => 'C',
_ => 'F'
};
static void Main() => Console.WriteLine(Grade(85));
}not null ร่วมกับรูปแบบคุณสมบัติ
การรวม not null เข้ากับรูปแบบชนิดข้อมูลและรูปแบบคุณสมบัติ ทำให้ได้เงื่อนไขดักที่ปลอดภัยและสื่อความหมายได้ดี
obj is Person { Name: not null } p จะตรงกับ Person ที่ไม่ใช่ null และมี Name ที่ไม่ใช่ null เช่นกัน พร้อมผูกค่าไว้กับตัวแปร วิธีนี้ช่วยหลีกเลี่ยงการตรวจสอบค่า null ที่ซ้อนต่อเนื่องกัน
record Person(string? Name);
object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
System.Console.WriteLine(p.Name);การปฏิเสธช่วงค่า
คุณสามารถปฏิเสธกลุ่มรูปแบบเชิงสัมพันธ์ด้วย not และวงเล็บ เพื่อแสดงค่าที่ต้องการยกเว้น
not (>= 1 and <= 5) จะตรงกับทุกค่าที่อยู่นอกช่วง 1 ถึง 5 สำหรับผู้อ่านบางคน รูปแบบนี้อ่านได้ตรงไปตรงมากว่า < 1 or > 5 ซึ่งให้ผลเทียบเท่ากัน
using System;
class Program {
static void Main() {
int n = 9;
bool outside = n is not (>= 1 and <= 5);
Console.WriteLine(outside);
}
}การผสมกับรูปแบบชนิดข้อมูล
รูปแบบตรรกะสามารถนำมารวมกับรูปแบบชนิดข้อมูลได้เช่นกัน o is int or long จะตรงกับชนิดข้อมูลตัวเลขจำนวนเต็มในหนึ่งการตรวจสอบ
วิธีนี้มีประโยชน์เมื่อต้องจัดการชนิดข้อมูลที่เกี่ยวข้องกันหลายชนิดในลักษณะเดียวกัน โปรดทราบว่าทั้งสองด้านของ or ต้องเข้ากันได้กับวิธีที่นำผลลัพธ์ไปใช้
object o = 5L;
string kind = o switch
{
int or long => "integral",
float or double => "floating",
_ => "other"
};
System.Console.WriteLine(kind);แนวทางด้านความอ่านง่าย
รูปแบบเชิงตรรกะสื่อความหมายได้ดี แต่ก็อาจหนาแน่นได้ ควรทำแขนงให้สั้น เลือกใช้ช่วงกับ and และใส่วงเล็บเมื่อผสม and/or เพื่อให้อ่านได้ชัดเจน
เมื่อเงื่อนไขมีหลายส่วนหรือต้องใช้ตัวแปรภายนอก เงื่อนไขกำกับด้วย when อาจอ่านเข้าใจง่ายกว่ารูปแบบเชิงตรรกะที่ยาว ควรเลือกวิธีที่สื่อเจตนาได้ชัดเจนกว่า
int n = 42;
string r = n switch
{
> 0 and < 10 when n % 2 == 0 => "small even",
_ => "other"
};
System.Console.WriteLine(r);ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับรูปแบบเชิงสัมพันธ์และรูปแบบเชิงตรรกะ
ทบทวน
รูปแบบเชิงสัมพันธ์ (< > <= >=) ใช้เปรียบเทียบกับค่าคงที่ ส่วนรูปแบบเชิงตรรกะใช้รวมรูปแบบย่อยด้วย and, or และ not
ลำดับความสำคัญคือ not ตามด้วย and แล้วจึงเป็น or ดังนั้นควรใส่วงเล็บเมื่อมีการผสมกัน ต่อไปเราจะกล่าวถึงรูปแบบรายการและรูปแบบทูเพิล
คำถามที่พบบ่อย
บทเรียน “รูปแบบเชิงสัมพันธ์และตรรกะ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รูปแบบเชิงสัมพันธ์และตรรกะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบเชิงสัมพันธ์และตรรกะ”
รวมเงื่อนไขในรูปแบบ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “รูปแบบเชิงสัมพันธ์และตรรกะ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นิพจน์ switch
- รูปแบบชนิดข้อมูลและคุณสมบัติ
- รูปแบบเชิงสัมพันธ์และตรรกะ
- รูปแบบรายการและทูเพิล