วิธีที่ง่ายที่สุดในการตรวจสอบว่าตัวแปรเท่ากับค่าจากรายการใน C#

เมื่อทำงานกับ C# เป็นเรื่องปกติที่ต้องตรวจสอบว่าตัวแปรตรงกับค่าหลายค่า คำถามนี้กลายเป็น “วิธีที่กระชับที่สุดในการทำสิ่งนี้คืออะไร?” โดยเฉพาะอย่างยิ่ง คุณจะต้องการหลีกเลี่ยงการเขียนตัวแปรที่คุณกำลังตรวจสอบซ้ำหลายครั้ง ในขณะที่หลีกเลี่ยงการใช้ไวยากรณ์ที่ยาวหรือซับซ้อนเช่นอาร์เรย์หรือลิสต์เมื่อมันไม่จำเป็น

ในโพสต์บล็อกนี้ เราจะสำรวจวิธีการต่าง ๆ เพื่อตรวจสอบว่าตัวแปรเท่ากับหนึ่งในชุดค่าที่กำหนดอย่างมีประสิทธิภาพโดยใช้ตรรกะเชิง boolean

วิธีทั่วไป

บ่อยครั้งที่นักพัฒนาซอฟต์แวร์อาจใช้ตัวดำเนินการ OR เชิงตรรกะ (||) เพื่อทำการเปรียบเทียบโดยตรง เช่นนี้:

int baseCase = 5;
bool testResult = baseCase == 3 || baseCase == 7 || baseCase == 12 || baseCase == 5;

แม้ว่าวิธีนี้จะทำงานได้ แต่ก็ต้องเขียนโค้ดซ้ำสำหรับแต่ละค่าที่คุณต้องการตรวจสอบ ดังที่เห็น หากคุณมีรายการค่าที่ยาว โค้ดอาจกลายเป็นเรื่องยุ่งเหยิงและมีโอกาสเกิดข้อผิดพลาดได้มาก

คิดใหม่ในวิธีของคุณ

คำถามหนึ่งที่ถูกยกขึ้นคือมีวิธีในการรวมตรรกะนี้ให้กระชับมากขึ้นหรือไม่โดยไม่ต้องใช้การแสดงออกที่ยาวหรือฟีเจอร์ .NET 3.5 โดยเฉพาะอย่างยิ่ง คุณต้องการหลีกเลี่ยงการใช้โครงสร้างที่ต้องใช้ Arrays มาดูวิธีที่กะทัดรัดกว่ากัน

ใช้ Contains

หากคุณยังสนใจวิธีที่มีประสิทธิภาพมากขึ้นในการตรวจสอบค่าหลายค่า วิธีที่ดีที่สุดคือการใช้เมธอด Contains แม้ว่าจะเกี่ยวข้องกับการใช้อาร์เรย์หรือลิสต์ นี่คือวิธีที่คุณสามารถเขียน:

bool testResult = new int[] { 3, 7, 12, 5 }.Contains(baseCase);

ทำไมต้องใช้ Contains?

วิธีนี้ช่วยทำให้โค้ดของคุณเรียบง่ายในหลายวิธีที่สำคัญ:

  • ความสามารถในการอ่าน: มันช่วยเพิ่มความชัดเจนของโค้ด ผู้ที่อ่านโค้ดของคุณสามารถทราบในทันทีว่าคุณกำลังพยายามทำอะไรโดยไม่ต้องแปลความหมายของการดำเนินการ OR ที่ซับซ้อน
  • ความยืดหยุ่น: คุณสามารถปรับเปลี่ยนรายการค่าที่คุณตรวจสอบได้อย่างรวดเร็วโดยไม่ต้องเปลี่ยนโครงสร้างตรรกะของคุณ
  • การขยายตัว: เพิ่มหรือลบองค์ประกอบในเงื่อนไขของคุณโดยไม่ต้องกังวลเกี่ยวกับการเขียนซ้ำหรือการฟุ้งซ่านของโค้ด

ข้อพิจารณาสำหรับผู้ใช้ .NET 2.0

จากข้อจำกัดที่ใช้เฟรมเวิร์ก .NET 2.0 บางฟีเจอร์ที่มีอยู่ในรุ่นหลังไม่สามารถเข้าถึงได้ อย่างไรก็ตาม การใช้งาน Contains ที่แชร์มาข้างต้นทำงานได้ดีใน .NET 2.0 โดยสิ่งต่อไปนี้ยังคงเป็นทางออกที่ง่ายและมีประสิทธิภาพ:

bool b = new int[] { 3, 7, 12, 5 }.Contains(5);

สรุป

การตรวจสอบว่าตัวแปรเท่ากับค่าจากชุดสามารถจัดการได้อย่างชาญฉลาดโดยใช้เมธอด Contains ในอาร์เรย์ มันมีวิธีแก้ปัญหาที่เรียบง่ายและกระชับในขณะที่ยังคงความสามารถในการอ่านโค้ดและลดความเสี่ยงของข้อผิดพลาดจากการใช้ข้อความตรรกะที่ยาว อย่าลืมว่าเมื่อคุณสร้างสถานการณ์ตรรกะที่ซับซ้อนมากขึ้นใน C# การใช้วิธีเหล่านี้สามารถช่วยสนับสนุนให้โค้ดมีความสะอาดและบำรุงรักษาง่ายซึ่งสามารถทำงานได้ดีแม้ในเฟรมเวิร์กที่เก่าแก่เช่น .NET 2.0

ดังนั้นครั้งต่อไปที่คุณต้องตรวจสอบตัวแปรกับรายการ อย่าลืมนึกถึงกลยุทธ์เหล่านี้เพื่อให้โค้ดของคุณสะอาดยิ่งขึ้น!