แบบฝึกหัด - ใช้คําสั่งสลับ
- 11 นาที
switchคําสั่ง คือคําสั่งการเลือก C# ที่แสดงทางเลือกในการสร้างif-elseif-elseสาขา คําสั่ง switch มีข้อดีเหนือโครงสร้าง if-elseif-else เมื่อประเมินค่าเดี่ยวกับรายการของค่าที่ตรงกันที่รู้จัก
พิจารณาสถานการณ์ต่อไปนี้:
- คุณกําลังทํางานในแอพพลิเคชั่นที่เกี่ยวข้องกับโภชนาการอาหาร ส่วนหนึ่งของโค้ดจัดการกับผลไม้
- โค้ดของคุณประกอบด้วยตัวแปรที่
fruitชื่อว่าถูกใช้เพื่อเก็บชื่อของผลไม้ประเภทต่าง ๆ - คุณมีรายการของผลไม้ 20 ชนิดที่แอปพลิเคชันของคุณมุ่งเน้น
- คุณต้องการแยกสาขารหัสของคุณตามค่าที่
fruitกําหนดให้กับ
ในสถานการณ์นี้ คุณสามารถใช้ switch คําสั่งเพื่อสร้างสาขาแยกต่างหากสําหรับผลไม้แต่ละชนิดได้
คําสั่งสลับทํางานอย่างไร
คําสั่ง switch เลือกหนึ่งส่วนของโค้ดที่จะดําเนินการจากรายการส่วนการสลับที่เป็นไปได้
ส่วนสวิตช์ที่เลือกจะถูกเลือกโดยยึดตามรูปแบบที่ตรงกับนิพจน์การจับคู่ของคําสั่ง
พิจารณาตัวอย่างโค้ดต่อไปนี้ที่แสดงโครงสร้างพื้นฐานของ switch คําสั่ง:
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
นิพจน์ match (ซึ่งอาจเรียกว่านิพจน์ switch) คือค่าตามswitchคําสําคัญ ในกรณีนี้(fruit) แต่ละส่วนสวิตช์จะถูกกําหนดโดยรูปแบบตัวพิมพ์เล็ก รูปแบบ Case จะถูกสร้างขึ้นโดยใช้คําสําคัญ case ตามด้วยค่า รูปแบบกรณีแรกในตัวอย่างนี้คือ: case "apple": รูปแบบ Case เป็นนิพจน์บูลีนที่ประเมินเป็น true หรือfalse ส่วนสวิตช์แต่ละส่วนประกอบด้วยจํานวนบรรทัดโค้ดขนาดเล็กที่จะดําเนินการหากรูปแบบกรณีตรงกันสําหรับนิพจน์ที่ตรงกัน ในตัวอย่างนี้ ถ้ามี fruit การกําหนดค่าของ "apple" รูปแบบกรณีแรกจะประเมินเป็น true และส่วนสวิตช์นั้นจะดําเนินการ
คําสั่งสลับต้องมีอย่างน้อยหนึ่งส่วนสวิตช์ แต่โดยปกติจะมีส่วนสลับสามรายการขึ้นไป
สวิตช์นี้เหมาะที่สุดเมื่อ:
- คุณมีค่าเดียว (ตัวแปรหรือนิพจน์) ที่คุณต้องการจับคู่กับค่าที่เป็นไปได้มากมาย
- สําหรับการจับคู่ที่ระบุ คุณต้องดําเนินการโค้ดสองบรรทัดเป็นส่วนใหญ่
หมายเหตุ
ตัวอย่าง switch แรกของคําสั่งนี้มีความเรียบง่ายและมีวัตถุประสงค์และการตรวจสอบไวยากรณ์ของคุณก็สั้นๆ คุณจะตรวจสอบคุณลักษณะเพิ่มเติมของคําสั่ง switch เมื่อคุณทํางานผ่านสถานการณ์ขั้นสูงเพิ่มเติมบางอย่างในส่วนด้านล่าง
ได้เวลาเตรียมสภาพแวดล้อมการเขียนโค้ดของคุณ และเริ่มพัฒนาคําสั่งของคุณเองswitch
เตรียมสภาพแวดล้อมการเข้ารหัสของคุณ
โมดูลนี้ประกอบด้วยกิจกรรมลงมือทําซึ่งจะแนะนําคุณตลอดกระบวนการสร้างและเรียกใช้รหัสการสาธิต เราขอแนะนําให้คุณทํากิจกรรมเหล่านี้ให้เสร็จสมบูรณ์โดยใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาของคุณ การใช้ Visual Studio Code สําหรับกิจกรรมเหล่านี้จะช่วยให้คุณเขียนและเรียกใช้โค้ดในสภาพแวดล้อมของนักพัฒนาที่มืออาชีพใช้ทั่วโลกได้อย่างสะดวกขึ้น
เปิด Visual Studio Code
คุณสามารถใช้เมนูเริ่มต้นของ Windows (หรือทรัพยากรที่เทียบเท่าสําหรับระบบปฏิบัติการอื่น) เพื่อเปิด Visual Studio Code
บนเมนู ไฟล์ รหัส Visual Studio เลือก เปิดโฟลเดอร์
ในกล่องโต้ตอบ เปิดโฟลเดอร์ ให้ไปยังโฟลเดอร์ Windows Desktop
หากคุณมีตําแหน่งโฟลเดอร์อื่นที่คุณเก็บโครงการโค้ดไว้ คุณสามารถใช้ตําแหน่งโฟลเดอร์นั้นแทนได้ สําหรับการฝึกนี้ สิ่งสําคัญคือการมีตําแหน่งที่ตั้งที่ง่ายต่อการค้นหาและจดจํา
ในกล่องโต้ตอบ เปิด โฟลเดอร์ ให้เลือก เลือกโฟลเดอร์
ถ้าคุณเห็นกล่องโต้ตอบความปลอดภัยที่ถามว่าคุณเชื่อถือผู้เขียนหรือไม่ ให้เลือก ใช่
บนเมนู เทอร์มินัล Visual Studio Code ให้เลือก เทอร์มินัลใหม่
โปรดสังเกตว่าพร้อมท์คําสั่งในแผงเทอร์มินัล จะแสดงเส้นทางโฟลเดอร์สําหรับโฟลเดอร์ปัจจุบัน เช่น:
C:\Users\someuser\Desktop>หมายเหตุ
ถ้าคุณกําลังทํางานบนพีซีของคุณเองแทนที่จะเป็น Sandbox หรือสภาพแวดล้อมที่เป็นโฮสต์ และคุณจบมอดูล Microsoft Learn อื่นๆ ใน C# ซีรี่ส์นี้ คุณอาจสร้างโฟลเดอร์โครงการสําหรับตัวอย่างโค้ดไว้แล้ว ถ้าเป็นกรณีนี้ คุณสามารถข้ามขั้นตอนถัดไป ซึ่งใช้เพื่อสร้างแอปคอนโซลในโฟลเดอร์ TestProject
ที่พรอมต์คําสั่งเทอร์มินัล หากต้องการสร้างแอปพลิเคชันคอนโซลใหม่ในโฟลเดอร์ที่ระบุ ให้ป้อนพร้อมท์ต่อไปนี้:
dotnet new console -o ./CsharpProjects/TestProjectคําสั่ง .NET CLI นี้ใช้เทมเพลตโปรแกรม .NET เพื่อสร้างโครงการแอปพลิเคชันคอนโซล C# ใหม่ในตําแหน่งที่ตั้งโฟลเดอร์ที่ระบุ คําสั่งจะสร้างโฟลเดอร์ CsharpProjects และ TestProject ให้คุณ และใช้ TestProject เป็นชื่อของไฟล์ของคุณ
.csprojถ้ามีข้อความแสดงขึ้นเพื่อบอกให้คุณทราบว่ามีไฟล์อยู่แล้ว ให้ทําตามขั้นตอนถัดไป คุณจะใช้ไฟล์โครงการที่มีอยู่อีกครั้ง
ในมุมมอง EXPLORER ให้ขยายโฟลเดอร์ CsharpProjects
คุณควรเห็นโฟลเดอร์ TestProject และแฟ้มสองแฟ้ม แฟ้มโปรแกรม C# ที่ชื่อว่า Program.cs และแฟ้มโครงการ C# ที่ชื่อ TestProject.csproj
บนเมนู ไฟล์ รหัส Visual Studio เลือก เปิดโฟลเดอร์
ในกล่องโต้ตอบ เปิดโฟลเดอร์ เลือกโฟลเดอร์ CsharpProjects จากนั้นเลือก เลือกโฟลเดอร์
ในมุมมอง EXPLORER ให้ขยายโฟลเดอร์ TestProject จากนั้นเลือก Program.cs
ลบบรรทัดรหัสที่มีอยู่
คุณจะใช้โครงการคอนโซล C# นี้เพื่อสร้าง สร้าง และเรียกใช้ตัวอย่างโค้ดในระหว่างโมดูลนี้
ปิดแผงเทอร์มินัล
สร้างและทดสอบคําสั่งสลับ
ตรวจสอบให้แน่ใจว่าคุณมี Visual Studio Code เปิดและ Program.cs แสดงในแผง ตัวแก้ไข
หมายเหตุ
Program.cs ควรว่างเปล่า ถ้าไม่ใช่ เลือกและลบบรรทัดรหัสทั้งหมด
พิมพ์โค้ดต่อไปนี้ลงใน Visual Studio Code Editor:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");บนเมนู ไฟล์ Visual Studio Code ให้เลือก บันทึก
ต้องบันทึกไฟล์ Program.cs ก่อนที่จะสร้างหรือเรียกใช้โค้ด
ในแผง EXPLORER ในการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProjectจากนั้นเลือก เปิดในเทอร์มินัลแบบรวม
แผงเทอร์มินัลจะเปิดขึ้น เทอร์มินัลควรมีพร้อมท์คําสั่งที่แสดงว่าเทอร์มินัลเปิดอยู่ไปยังตําแหน่งที่ตั้งโฟลเดอร์ TestProject ของคุณ
ที่พร้อมท์คําสั่งเทอร์มินัล เมื่อต้องการเรียกใช้โค้ดของคุณ ให้พิมพ์ dotnet เรียกใช้ แล้วกด Enter
หมายเหตุ
ถ้าคุณเห็นข้อความ "ไม่พบโครงการที่จะเรียกใช้" ตรวจสอบให้แน่ใจว่าพร้อมท์คําสั่งเทอร์มินัลแสดงตําแหน่งที่ตั้งโฟลเดอร์ TestProject ที่คาดไว้ ตัวอย่าง:
C:\Users\someuser\Desktop\csharpprojects\TestProject>คุณควรเห็นผลลัพธ์ต่อไปนี้:
John Smith, Senior Associateใช้เวลาสักครู่เพื่อตรวจสอบ
switchคําสั่งที่คุณป้อนโปรดสังเกตว่าคําสั่ง
switchกําหนดบล็อกรหัสเดียวคําสั่ง
switchกําหนดบล็อกรหัสเดียวที่มีรายการของส่วนสวิตช์ ทางด้านขวาของswitchคําสําคัญคือ นิพจน์ switch ที่ถูกล้อมรอบด้วยวงเล็บโปรดสังเกตรายการส่วนสวิตช์ภายในบล็อกรหัส
บล็อก
switchรหัสประกอบด้วยรายการของ ส่วนสลับ ซึ่งแต่ละส่วนประกอบด้วยป้ายชื่อสลับอย่างน้อยหนึ่งรายการ นอกจากนี้ ส่วนสวิตช์แต่ละส่วนจะมีรายการคําสั่งที่จะดําเนินการหากป้ายชื่อเท่ากับนิพจน์การสลับที่กําหนดไว้ที่ด้านบนของคําสั่งสลับนิพจน์ switch จะถูกประเมินกับป้ายชื่อกรณีจากบนลงล่างจนกว่าจะพบค่าที่เท่ากับนิพจน์ switch ถ้าไม่มีป้ายชื่อใดตรงกัน รายการคําสั่งสําหรับ
defaultกรณีดังกล่าวจะดําเนินการ ถ้าไม่มีค่าเริ่มต้นถูกรวมไว้ ตัวควบคุมจะถูกโอนย้ายไปยังจุดสิ้นสุดของคําสั่งสลับ ป้ายชื่อแต่ละป้ายต้องมีชนิดค่าที่ตรงกับชนิดที่ระบุในนิพจน์การสลับหมายเหตุ
ป้ายชื่อที่เลือก
defaultได้สามารถปรากฏที่ตําแหน่งใดก็ได้ภายในรายการของส่วนสวิตช์ อย่างไรก็ตาม นักพัฒนาส่วนใหญ่เลือกที่จะใส่ค่าสุดท้ายเนื่องจากเหมาะสมกว่า (ตามตรรกะ) ในการวางตําแหน่งdefaultเป็นตัวเลือกสุดท้าย ส่วนจะถูกประเมินล่าสุดโดยไม่คํานึงถึงตําแหน่งdefaultในตัวอย่างของเรา:
- นิพจน์ switch คือ
(employeeLevel) - แต่ละส่วนสวิตช์มีป้ายสวิทช์เดียว (
caseหรือdefault) - ส่วนสวิตช์ที่ตรงกันจะถูกกําหนดโดย
case: 200เนื่องจากemployeeLevel = 200
- นิพจน์ switch คือ
โปรดสังเกตว่าแต่ละส่วนสวิตช์จะถูกแยกออกจากส่วนถัดไป
อนุญาตให้ดําเนินการได้เพียงส่วนสวิตช์เดียวเท่านั้น ซึ่งหมายความว่า การดําเนินการของส่วนสวิตช์ไม่ได้รับอนุญาตให้ "เข้าถึงได้" ไปยังส่วนสวิตช์ถัดไป คํา
breakสําคัญเป็นหนึ่งในหลายวิธีในการจบส่วนสวิตช์ก่อนที่จะไปยังส่วนถัดไป หากลืมคีย์breakเวิร์ด (หรือคําreturnสําคัญ) คอมไพเลอร์จะสร้างข้อผิดพลาด
เปลี่ยนค่าตัวแปรระดับเพื่อดูว่าคําสั่งสลับประเมินอย่างไร
เพื่อใช้กรณีเริ่มต้น ลองเปลี่ยนระดับของพนักงานโดยการปรับเปลี่ยนการกําหนดค่า
หากต้องการปรับเปลี่ยนค่าที่
employeeLevelกําหนดให้กับ ให้อัปเดตโค้ดของคุณดังต่อไปนี้:int employeeLevel = 201;บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
ใส่
dotnet runจากพร้อมท์คําสั่งเทอร์มินัล เพื่อเรียกใช้โค้ดของคุณโปรดสังเกตว่าเอาต์พุตมีการเปลี่ยนแปลง
ตอนนี้ เมื่อคุณเรียกใช้รหัส คุณควรเห็นชื่อทั่วไปมากขึ้นที่ใช้
John Smith, AssociateemployeeLevelเนื่องจาก ไม่ตรงกับป้ายชื่อdefaultใดๆ ป้ายชื่อจึงตรงกัน
ปรับเปลี่ยนส่วนสวิตช์เพื่อให้มีหลายป้ายชื่อ
สมมติว่าบริษัทของเราตัดสินใจให้ชื่อ "ผู้ร่วมงานอาวุโส" แก่พนักงานทุกระดับ 100 คน -- เป็นชื่อเดียวกันกับพนักงานระดับ 200 ในฐานะนักพัฒนา คุณตัดสินใจที่จะดําเนินการโดยการลบส่วนสวิตช์แรกที่อยู่ในป้ายชื่อ case 100:ออก และอนุญาตให้ทั้ง case 100: ป้ายชื่อ และ case 200: แทนเพื่อดําเนินการในส่วนสวิตช์เดียวกัน
หากต้องการปรับเปลี่ยนค่าที่
employeeLevelกําหนดให้กับ ให้อัปเดตโค้ดของคุณดังต่อไปนี้:int employeeLevel = 100;หากต้องการกําหนดป้ายชื่อหลายป้ายให้กับส่วนสวิตช์แรก ให้อัปเดตโค้ดของคุณดังต่อไปนี้:
case 100: case 200: title = "Senior Associate"; break;เมื่อคุณทําการเปลี่ยนแปลงเสร็จแล้ว การแก้ไขของคุณควรตรงกับโค้ดต่อไปนี้:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");บันทึกไฟล์โค้ดของคุณ จากนั้นใช้ Visual Studio Code เพื่อเรียกใช้โค้ดของคุณ
ใส่
dotnet runจากพร้อมท์คําสั่งเทอร์มินัล เพื่อเรียกใช้โค้ดของคุณคุณควรเห็นผลลัพธ์ต่อไปนี้:
John Smith, Senior Associateทั้งสองป้ายชื่อ
100กรณีและ200ตอนนี้จับคู่กับส่วนสวิตช์ที่ตั้งค่าชื่อเรื่องเป็นค่าSenior Associateสตริง
สรุป
นี่คือประเด็นหลักที่คุณเรียนรู้เกี่ยวกับคําสั่ง switch:
- ใช้คําสั่ง
switchเมื่อคุณมีค่าหนึ่งค่าที่มีการจับคู่ที่เป็นไปได้หลายรายการ แต่ละรายการที่ต้องใช้สาขาในตรรกะรหัสของคุณ - ส่วนการสลับเดียวที่มีตรรกะโค้ดสามารถจับคู่ได้โดยใช้ป้ายชื่ออย่างน้อยหนึ่งป้ายที่กําหนดโดย
caseคําสําคัญ - ใช้คําสําคัญที่เลือกได้
defaultเพื่อสร้างป้ายชื่อและส่วนสวิตช์ที่จะใช้เมื่อไม่ตรงกับป้ายชื่อกรณีอื่น ๆ
การประเมินความรู้
คำติชม
หน้านี้มีประโยชน์หรือไม่
ไม่
ต้องการความช่วยเหลือในหัวข้อนี้หรือไม่
ต้องการลองใช้ Ask Learn เพื่อทําให้ชัดเจนหรือแนะนําคุณผ่านหัวข้อนี้หรือไม่