Saya telah menjalankan StyleCop di atas kode saya dan salah satu rekomendasi SA1122 adalah menggunakan string.Empty daripada "" saat menetapkan string kosong ke suatu nilai.
Pertanyaan saya adalah mengapa ini dianggap praktik terbaik. Atau, apakah ini dianggap praktik terbaik? Saya berasumsi tidak ada perbedaan kompiler antara dua pernyataan jadi saya hanya bisa berpikir bahwa itu adalah hal yang mudah dibaca?
""
tetapi tidakstring.Empty
Jawaban:
Salah satu alasan yang valid adalah bahwa ini menjelaskan bahwa ini bukan kesalahan ketik atau pengganti, bahwa Anda benar-benar bermaksud menggunakan string kosong di sini.
Saya tidak tahu apakah itu dianggap "praktik terbaik".
sumber
Saya membayangkan ada dua alasan, satu untuk keterbacaan, dan dua untuk peningkatan kinerja kecil.
Keterbacaan itu mudah: jauh lebih cepat dikenali
string.Empty
daripada""
. Mencaristring.Empty
juga umumnya akan lebih mudah dan mungkin lebih akurat daripada mencari yang literal. Ini juga menjelaskan maksud: Anda tidak hanya membuat kesalahan ketik atau lupa untuk menyelesaikan sesuatu, Anda benar-benar ingin string kosong.Alasan kinerja adalah karena magang . Anda lihat, runtime menyimpan tabel string yang sebelumnya digunakan sehingga dapat dengan cepat melakukan perbandingan string tanpa benar-benar melakukan pemeriksaan karakter-per-karakter.
string.Empty
sudah menjadi referensi diinternir ke""
mana-seperti mengetik literal mungkin tidak memberi Anda versi diinternir, sehingga menyebabkan sedikit kinerja hit.sumber
string.Empty
menang dalam kasus yang benar-benar sudut, yang dapat menyebabkan beberapa bug ajaib dan sangat sulit untuk di-debug:Jika ada ruang lebar nol di
""
.sumber
Menurut beberapa dokumentasi yang saya temukan, itu ada hubungannya dengan apa yang dipancarkan oleh kompiler.
Pencarian cepat mengungkapkan: http://stylecop.soyuz5.com/SA1122.html
Mengapa itu diajukan di bawah "Aturan Keterbacaan" dengan uraian itu membingungkan.
sumber