การรับค่าสูงสุดจากประเภทการแจงนับเป็นงานทั่วไปที่นักพัฒนาต้องเผชิญ สิ่งนี้จำเป็นในสถานการณ์ที่คุณต้องการตรวจสอบอินพุตของผู้ใช้หรือจัดการทรัพยากรบางอย่างตามค่าแจงนับ C# มอบวิธีที่ตรงไปตรงมาในการบรรลุเป้าหมายนี้โดยใช้คลาส Enum และ LINQ เล็กน้อย
เรามาสำรวจวิธีแก้ปัญหาที่ทำให้การดึงค่าสูงสุดของการแจงนับเป็นเรื่องง่ายเหมือนกับพาย
หมายเลขสาธารณะ MyEnum
{
ตัวเลือก 1 = 1,
ตัวเลือก 2 = 2,
ตัวเลือก 3 = 3
}
...
int สาธารณะ GetMaxEnumValue()
{
กลับ Enum.GetValues (typeof (MyEnum)). Cast().สูงสุด();
}
โค้ดสั้นๆ นี้ทำหน้าที่ดึงค่าสูงสุดในแจงนับทั้งหมด แต่มันทำงานอย่างไร?
เจาะลึกโค้ด
`Enum.GetValues(typeof(MyEnum))` เป็นส่วนสำคัญชิ้นแรกที่ต้องทำความเข้าใจ เมธอด .NET ในตัวนี้ส่งคืนอาร์เรย์ที่มีค่าของค่าคงที่ในการแจงนับที่ระบุ ประเภทการแจงนับจะถูกส่งผ่านเป็นพารามิเตอร์ไปยังวิธีการโดยใช้คีย์เวิร์ด "typeof"
เมื่อเรามีอาร์เรย์แล้ว เราต้องแปลงให้เป็นจำนวนเต็ม ทำได้โดยใช้ .Cast() วิธีการซึ่งเป็นส่วนหนึ่งของ LINQ (Language Integrated Query) LINQ คือชุดของเทคนิคและวิธีการใน .NET ที่ช่วยให้เราสามารถทำงานกับข้อมูลได้อย่างเป็นธรรมชาติและยืดหยุ่นมากขึ้น
หลังจากแปลงค่าเป็นจำนวนเต็มแล้ว การรับค่าสูงสุดนั้นทำได้ง่ายเหมือนกับการเรียกใช้เมธอด .Max() ซึ่งเป็นเครื่องมือที่ยอดเยี่ยมอีกเครื่องมือหนึ่งจาก LINQ วิธีการนี้จะส่งกลับค่าสูงสุดในชุดของค่า int
การใช้ประโยชน์จากไลบรารี Enum และ LINQ
คลาส Enum เป็นส่วนหนึ่งของเนมสเปซของระบบใน .NET และมีวิธีการคงที่หลายวิธีสำหรับการทำงานกับการแจงนับ เป็นไลบรารีที่เข้าถึงได้เมื่อคุณต้องการดำเนินการใดๆ ที่เกี่ยวข้องกับประเภทแจงนับ
ในทางกลับกัน LINQ ซึ่งเป็นส่วนหนึ่งของเนมสเปซ System.Linq เป็นหนึ่งในคุณสมบัติที่ทรงพลังที่สุดของ C# โดยมีวิธีการต่างๆ ในการจัดการคอลเลกชันอย่างมีประสิทธิภาพ เช่น การรับค่าสูงสุด ต่ำสุด หรือค่าเฉลี่ย การเรียงลำดับ และการกรองข้อมูล
อ่านเพิ่มเติม