แบบฝึกหัด - ใช้ตัวดําเนินการตามเงื่อนไข
- 7 นาที
สมมติว่าคุณจําเป็นต้องตรวจสอบอย่างรวดเร็วว่าการซื้อของลูกค้ามีสิทธิ์ได้รับส่วนลดส่งเสริมการขายหรือไม่ รายละเอียดสําหรับโปรโมชั่นระบุว่าเมื่อมูลค่าการซื้อมากกว่า 1,000 ยูโร การซื้อมีสิทธิ์ได้รับส่วนลด 100 ยูโร ถ้ายอดเงินการซื้อคือ 1,000 ยูโรหรือน้อยกว่า การซื้อจะมีสิทธิ์ได้รับส่วนลด 50 ยูโร
ในขณะที่คุณสามารถใช้ if ... elseif ... else โครงสร้างสาขาเพื่อแสดงกฎทางธุรกิจนี้ โดยใช้ ตัวดําเนินการตามเงื่อนไข เพื่อประเมินสิทธิ์สําหรับส่วนลดส่งเสริมการขายอาจเป็นตัวเลือกที่ดีกว่า ตัวดําเนินการตามเงื่อนไขใช้รูปแบบกะทัดรัดที่บันทึกโค้ดสองสามบรรทัดและอาจทําให้เจตนาของโค้ดชัดเจนยิ่งขึ้น
ตัวดําเนินการตามเงื่อนไขคืออะไร
ตัวดําเนินการ?:ตามเงื่อนไขจะประเมินนิพจน์บูลีนและส่งกลับผลลัพธ์หนึ่งในสองรายการ โดยขึ้นอยู่กับว่านิพจน์บูลีนประเมินเป็น true หรือ false
ตัวดําเนินการแบบมีเงื่อนไขมักเรียกว่า ตัวดําเนินการแบบมีเงื่อนไข ternary
นี่คือฟอร์มพื้นฐาน:
<evaluate this condition> ? <if condition is true, return this value> : <if condition is false, return this value>
ใช้เวลาสักครู่เพื่อพิจารณาว่าคุณจะใช้ตัวดําเนินการแบบมีเงื่อนไขกับสถานการณ์ส่วนลดส่งเสริมการขายอย่างไร เป้าหมายของคุณคือการแสดงข้อความให้กับลูกค้าที่แสดงเปอร์เซ็นต์ส่วนลดของพวกเขา จํานวนส่วนลดของพวกเขาจะขึ้นอยู่กับว่าพวกเขาได้ใช้จ่ายมากกว่า 1000 ยูโรในการซื้อของพวกเขา
เพิ่มโค้ดที่ใช้ตัวดําเนินการตามเงื่อนไข
ตรวจสอบให้แน่ใจว่า คุณมีไฟล์ Program.cs ที่ว่างเปล่าเปิดอยู่ในรหัส Visual Studio หากจําเป็น ให้เปิด Visual Studio Code แล้วทําตามขั้นตอนต่อไปนี้เพื่อเตรียมไฟล์ Program.cs ในตัวแก้ไข:
- บนเมนู ไฟล์ เลือก เปิดโฟลเดอร์
- ใช้กล่องโต้ตอบ เปิดโฟลเดอร์ เพื่อนําทางไปยัง และจากนั้นเปิดโฟลเดอร์ CsharpProjects
- ในแผง Visual Studio Code EXPLORER ให้เลือก Program.cs
- บนเมนู การเลือก รหัส Visual Studio เลือก เลือกทั้งหมด แล้วกดปุ่มลบ
พิมพ์โค้ดต่อไปนี้ลงใน Visual Studio Code Editor
int saleAmount = 1001; int discount = saleAmount > 1000 ? 100 : 50; Console.WriteLine($"Discount: {discount}");บนเมนู ไฟล์ Visual Studio Code ให้เลือก บันทึก
ต้องบันทึกไฟล์ Program.cs ก่อนที่จะสร้างหรือเรียกใช้โค้ด
ในแผง EXPLORER ในการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProjectจากนั้นเลือก เปิดในเทอร์มินัลแบบรวม
แผงเทอร์มินัลที่แสดงพรอมต์คําสั่งควรเปิดขึ้นแล้ว พร้อมท์คําสั่งควรแสดงเส้นทางโฟลเดอร์สําหรับตําแหน่งโฟลเดอร์ TestProject ของคุณ
ที่พร้อมท์คําสั่งเทอร์มินัล เมื่อต้องการเรียกใช้โค้ดของคุณ ให้พิมพ์ dotnet เรียกใช้ แล้วกด Enter
เมื่อคุณเรียกใช้โค้ด คุณควรเห็นเอาต์พุตต่อไปนี้:
Discount: 100
ใช้ตัวดําเนินการตามเงื่อนไขแบบอินไลน์
คุณสามารถกระชับรหัสนี้ได้มากยิ่งขึ้นโดยการกําจัดตัวแปร discountชั่วคราวออก
อัปเดตโค้ดของคุณใน Visual Studio Code Editor ดังนี้:
int saleAmount = 1001; // int discount = saleAmount > 1000 ? 100 : 50; Console.WriteLine($"Discount: {(saleAmount > 1000 ? 100 : 50)}");บนเมนู ไฟล์ Visual Studio Code ให้เลือก บันทึก
ที่พร้อมท์คําสั่งเทอร์มินัล เมื่อต้องการเรียกใช้โค้ดของคุณ ให้พิมพ์ dotnet เรียกใช้ แล้วกด Enter
โปรดสังเกตว่าเอาต์พุตเหมือนกัน
ใช้เวลาสักครู่ในการตรวจสอบรายงานที่อัปเดต
Console.WriteLine()แล้วโปรดสังเกตว่าจําเป็นต้องครอบคลุมคําสั่ง ตัวดําเนินการตามเงื่อนไข ทั้งหมดในวงเล็บ วงเล็บให้แน่ใจว่ารันไทม์เข้าใจเจตนาของคุณ ซึ่งเป็นการแสดงผลลัพธ์แบบมีเงื่อนไขแทนที่จะเป็นผลลัพธ์ของการประเมินเงื่อนไข (saleAmount > 1000)
หมายเหตุ
ในขณะที่ตัวอย่างนี้มีขนาดกะทัดรัดและแสดงสิ่งที่เป็นไปได้ แต่ก็ยากกว่าในการอ่านเล็กน้อย ไม่ควรรวมบรรทัดของโค้ดโดยเฉพาะอย่างยิ่งเมื่อส่งผลกระทบต่อความยากง่ายในการอ่านโดยรวมของโค้ดของคุณ ซึ่งมักจะเป็นการเรียกการตัดสินอัตนัย
สรุป
คุณควรจําข้อเท็จจริงต่อไปนี้เกี่ยวกับตัวดําเนินการแบบมีเงื่อนไข:
- คุณสามารถใช้ตัวดําเนินการตามเงื่อนไขเพื่อลดขนาดของโค้ดของคุณ แต่คุณควรตรวจสอบให้แน่ใจว่าโค้ดผลลัพธ์สามารถอ่านได้ง่าย
- คุณสามารถใช้ตัวดําเนินการตามเงื่อนไขเมื่อคุณต้องการส่งกลับค่าที่ยึดตามเงื่อนไขไบนารี รหัสของคุณจะส่งกลับตัวเลือกแรกเมื่อเงื่อนไขประเมินเป็นจริง และจะส่งกลับตัวเลือกที่สองเมื่อเงื่อนไขประเมินเป็น เท็จ