Secara umum (mempertimbangkan semua bahasa dan semua kompiler) pernyataan switch DAPAT SESUATU lebih efisien daripada pernyataan if / else, karena mudah bagi kompiler untuk menghasilkan tabel lompatan dari pernyataan switch. Dimungkinkan untuk melakukan hal yang sama untuk pernyataan if / else, dengan batasan yang sesuai, tetapi itu jauh lebih sulit.
Dalam kasus C #, ini juga benar, tetapi karena alasan lain.
Dengan sejumlah besar string, ada keuntungan kinerja yang signifikan untuk menggunakan pernyataan switch, karena kompiler akan menggunakan tabel hash untuk mengimplementasikan lompatan.
Dengan sejumlah kecil string, kinerja keduanya sama.
Ini karena dalam kasus itu kompiler C # tidak menghasilkan tabel lompatan. Alih-alih itu menghasilkan MSIL yang setara dengan blok IF / ELSE.
Ada instruksi MSIL "switch statement" yang ketika dipasangkan akan menggunakan tabel lompat untuk mengimplementasikan pernyataan switch. Namun, ini hanya bekerja dengan tipe integer (pertanyaan ini menanyakan tentang string).
Untuk sejumlah kecil string, ini lebih efisien bagi kompiler untuk menghasilkan blok IF / ELSE daripada menggunakan tabel hash.
Ketika saya awalnya memperhatikan hal ini, saya membuat asumsi bahwa karena blok IF / ELSE digunakan dengan sejumlah kecil string, maka kompiler melakukan transformasi yang sama untuk sejumlah besar string.
Ini SALAH. 'IMA' cukup baik untuk menunjukkan hal ini kepada saya (well ... dia tidak baik tentang itu, tapi dia benar, dan saya salah, yang merupakan bagian penting)
Saya juga membuat asumsi berkepala tentang kurangnya "saklar" instruksi di MSIL (saya pikir, jika ada saklar primitif, mengapa mereka tidak menggunakannya dengan tabel hash, jadi tidak boleh ada saklar primitif. ...). Ini salah, dan sangat bodoh di pihak saya. Sekali lagi 'IMA' menunjukkan ini kepada saya.
Saya membuat pembaruan di sini karena itu adalah posting berperingkat tertinggi, dan jawaban yang diterima.
Namun, saya telah membuatnya menjadi Komunitas Wiki karena saya pikir saya tidak pantas menerima REP karena salah. Jika Anda mendapat kesempatan, silakan pilih posting 'ima'.