Dalam C # jika saya ingin membagi string
dengan yang lain string
saya harus melakukan sesuatu seperti itu:
testString.Split(new string[] { "anotherString" }, StringSplitOptions.None);
Dari String.Split
Dokumentasi 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.Split
untuk 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.Split
yang 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 ( anotherString
dalam hal ini).