Dalam C # jika saya ingin membagi stringdengan yang lain stringsaya harus melakukan sesuatu seperti itu:
testString.Split(new string[] { "anotherString" }, StringSplitOptions.None);
Dari String.SplitDokumentasi MSDN yang kelebihan beban kita bisa melihat implementasinya dan mengapa panggilan seperti itu harus dilakukan.
Berasal dari Python , Sulit bagi saya untuk memahami dengan benar mengapa panggilan seperti itu diperlukan. Maksud saya, saya dapat menggunakan Regex.Splituntuk mendapatkan sintaksis yang mirip dari implementasi Python tetapi saya harus melakukannya dengan biaya kinerja yang lebih rendah (waktu setup) untuk sesuatu yang sederhana .
Jadi pada dasarnya, pertanyaan saya adalah mengapa kita tidak bisa begitu saja:
testString.Split("anotherString");
Perhatikan bahwa saya tidak menyarankan prototipe atau implementasi apa pun. Saya mengerti mengapa Anda tidak dapat mengimplementasikan versi di atas mengingat API saat ini. Tujuan saya adalah untuk memahami mengapa API semacam itu dapat dibuat dengan mempertimbangkan manfaat yang dihasilkan oleh sintaks di atas. Sampai sekarang, fleksibilitas tampaknya menjadi tujuan arus String.Splityang masuk akal, tetapi jujur saya benar-benar berpikir ada semacam peningkatan kinerja di suatu tempat. Saya kira saya salah.
testString.Split(",.;");dan testString.Split(new Char [] {',', '.', ';',);itu bukan hal yang sama.
IEnumerable<char>prototipe tambahan yang Anda sarankan mungkin tampak ambigu dalam kasus-kasus tertentu (apakah Anda membatasi seluruh string atau membatasi oleh masing-masing karakternya?) Hanya tebakan.
testString.Split("anotherString");, saya cukup percaya diri untuk mengatakan bahwa perilaku yang diharapkan adalah membatasi seluruh string ( anotherStringdalam hal ini).