ดูเหมือนว่าจะมีงานที่น่าสะพรึงกลัวมากมายในการหาวิธีที่จะใช้หนึ่งใน C # ที่ใช้ไวยากรณ์น้อยที่สุดเพื่อให้ดูดีขึ้นหรือทำงานได้ดีขึ้น โดยส่วนตัวฉันพบว่าคำสั่ง switch นั้นไม่ค่อยคุ้มค่าที่จะใช้ ฉันขอแนะนำอย่างยิ่งให้วิเคราะห์ข้อมูลที่คุณกำลังทดสอบและผลลัพธ์สุดท้ายที่คุณต้องการ
ให้เราพูดเช่นคุณต้องการทดสอบค่าอย่างรวดเร็วในช่วงที่ทราบเพื่อดูว่าเป็นจำนวนเฉพาะหรือไม่ คุณต้องการหลีกเลี่ยงการใช้รหัสของคุณทำการคำนวณที่สิ้นเปลืองและคุณสามารถค้นหารายการของจำนวนเฉพาะในช่วงที่คุณต้องการออนไลน์ คุณสามารถใช้คำสั่ง switch ขนาดใหญ่เพื่อเปรียบเทียบแต่ละค่ากับจำนวนเฉพาะที่ทราบ
หรือคุณเพียงแค่สร้างแผนที่อาร์เรย์ของช่วงเวลาและรับผลทันที:
bool[] Primes = new bool[] {
false, false, true, true, false, true, false,
true, false, false, false, true, false, true,
false,false,false,true,false,true,false};
private void button1_Click(object sender, EventArgs e) {
int Value = Convert.ToInt32(textBox1.Text);
if ((Value >= 0) && (Value < Primes.Length)) {
bool IsPrime = Primes[Value];
textBox2.Text = IsPrime.ToString();
}
}
บางทีคุณอาจต้องการดูว่าอักขระในสตริงนั้นเป็นเลขฐานสิบหกหรือไม่ คุณสามารถใช้คำสั่ง switch ที่ไม่ใหญ่และค่อนข้างใหญ่
หรือคุณสามารถใช้นิพจน์ทั่วไปเพื่อทดสอบ char หรือใช้ฟังก์ชัน IndexOf เพื่อค้นหาอักขระ char ในสตริงของตัวอักษรฐานสิบหกที่รู้จักกัน:
private void textBox2_TextChanged(object sender, EventArgs e) {
try {
textBox1.Text = ("0123456789ABCDEFGabcdefg".IndexOf(textBox2.Text[0]) >= 0).ToString();
} catch {
}
}
ให้เราบอกว่าคุณต้องการทำหนึ่งใน 3 การกระทำที่แตกต่างกันขึ้นอยู่กับค่าที่จะอยู่ในช่วง 1 ถึง 24 ฉันขอแนะนำให้ใช้ชุดคำสั่ง IF และถ้ามันซับซ้อนเกินไป (หรือจำนวนที่มากขึ้นเช่น 5 การกระทำที่แตกต่างกันขึ้นอยู่กับค่าในช่วง 1 ถึง 90) จากนั้นใช้ enum เพื่อกำหนดการกระทำและสร้างแผนที่อาร์เรย์ของ enums จากนั้นค่าจะถูกใช้เพื่อทำดัชนีลงในแผนผังอาร์เรย์และรับ enum ของการกระทำที่คุณต้องการ จากนั้นใช้ชุดคำสั่ง IF ขนาดเล็กหรือชุดคำสั่งสวิตช์อย่างง่าย ๆ เพื่อประมวลผลค่า enum ที่เกิดขึ้น
นอกจากนี้สิ่งที่ดีเกี่ยวกับแผนที่อาเรย์ที่แปลงช่วงของค่าเป็นการกระทำคือมันสามารถเปลี่ยนได้ง่าย ๆ โดยรหัส ด้วยโค้ดแบบใช้สายยากคุณจะไม่สามารถเปลี่ยนพฤติกรรมที่รันไทม์ได้อย่างง่ายดาย แต่ด้วยแผนที่อาเรย์จึงเป็นเรื่องง่าย