Perbedaan antara "String" dan "string" dalam. NET dan mana yang terbaik?


15

Dalam .NET Framework, setidaknya dalam bahasa C #, kami memiliki dua "versi" dari tipe string:

  • "tali"
  • "Tali"

Tampaknya mereka dapat dipertukarkan, tetapi apakah mereka benar-benar? Jika tidak dapat dipertukarkan, apakah umumnya lebih baik menggunakan yang satu daripada yang lain, dan dalam situasi apa?


1
Mirip dengan pertanyaan ini: stackoverflow.com/q/6000517/6504
Agent_9191

2
Secara gaya, saya cenderung menggunakan versi huruf kecil ketika saya merujuk pada tipe, dan versi huruf besar ketika saya memanggil metode statis System.String.
Joel Mueller


2
stringtidak ada di .net, itu hanya ada di C #.
CodesInChaos

1
Meskipun ini mungkin sedikit lebih cocok untuk Stack Overflow, saya tidak berpikir itu sepenuhnya off topic untuk Programmer, dan karena Stack Overflow sudah memiliki setidaknya satu duplikat, tidak akan ada gunanya bermigrasi ini. Jadi tolong hentikan menandai / tutup voting untuk dimigrasi, jika Anda merasa ini harus ditutup, itu keren, tetapi harus ditutup tidak dimigrasi.
yannis

Jawaban:


30

Nah menurut MSDN

string adalah alias untuk String di .NET Framework.

Di mana "String" sebenarnya System.String.

Saya akan mengatakan bahwa mereka dapat dipertukarkan dan tidak ada perbedaan kapan dan di mana Anda harus menggunakan satu atau yang lain.

Akan lebih baik untuk konsisten dengan yang Anda gunakan.


untuk beberapa alasan saya memilikinya di kepala saya bahwa String adalah pembungkus kelas di sekitar nilai string yang diketik dan ini mengarah pada gagasan tinju ... apakah saya benar-benar salah di sini?
Aaron Anodide

1
@Gabriel Tidak, String(dan karenanya stringdengan alias) adalah jenis referensi.
Kris Harper

@ Gabriel: bukankah Java melakukan itu dengan hal-hal seperti byte vs Byte?
whatsisname

Apakah hal yang sama juga berlaku untuk Double vs double, dan tipe data lainnya?
Gavin Coates

1
@AaronAnodide Saya percaya itu adalah konvensi Java, yang mungkin merupakan tempat Anda mendengarnya.
KChaloux

20

Seperti yang ditunjukkan, mereka adalah hal yang sama dan stringhanya alias untuk String.

Untuk apa nilainya, saya gunakan stringuntuk mendeklarasikan tipe - variabel, properti, nilai pengembalian dan parameter. Hal ini konsisten dengan penggunaan jenis sistem lainnya - int, bool, vardll (meskipun Int32dan Booleanjuga benar).

Saya menggunakan Stringsaat menggunakan metode statis pada kelas String, suka String.Split()atau String.IsNullOrEmpty(). Saya merasa bahwa ini lebih masuk akal karena metode milik kelas, dan konsisten dengan cara saya menggunakan metode statis lainnya.


Kami menggunakan konvensi ini di tempat kerja juga, dan saya menyukainya. Otak saya secara otomatis membuat koneksi.
SBI

4

Saya sarankan menggunakan huruf kecil string. Huruf besar Stringakan menggunakan kelas pertama bernama String yang ditemukannya dalam ruang nama yang diimpor ... yang umumnya System.String. Dimungkinkan untuk kelas String Anda sendiri untuk digunakan sebagai gantinya.


3
Jika Anda memiliki dua jenis impor berbeda dengan nama yang sama, dan Anda menggunakan nama itu tanpa kualifikasi namespace, Anda akan mendapatkan kesalahan.
svick

Adalah mungkin untuk mengelabui Stringagar bekerja, tidak pernah mungkin untuk menipu string.
Bryan Boettcher

Namun, saya pikir itu bukan alasan yang cukup baik untuk digunakan string.
svick

5
Bagaimana "seseorang mungkin hancur" vs "seseorang tidak akan pernah putus" dengan semua yang identik bukan alasan yang cukup baik?
Bryan Boettcher

4

string adalah kata kunci C # yang hanya merupakan alias untuk System.String

..tapi karena itu kata kunci, editor / IDE pewarna sintaksis Anda akan menampilkannya dalam warna kata kunci, sama seperti int, dobel, jika, yang lain, dll. Secara gaya, Anda mungkin lebih suka menggunakan kata kunci daripada System.Stringjenisnya (atau Stringsetelahnya) kamu sudah selesai using System;).

Ini adalah titik niche meskipun, karena meskipun bool, char, int, doubledan stringsemua alias kata kunci untuk jenis sistem, stringadalah aneh-satu-out karena merupakan jenis referensi dan yang lainnya adalah jenis nilai.


4
objectadalah alias kata kunci untuk jenis referensi, juga
nikie

Oh ya, saya lupa semua itu - terima kasih atas pengingatnya.
JBRWilkinson

2

stringhanya alias untuk String, mereka pada akhirnya sama.

Anda dapat menggunakan mana yang Anda inginkan, meskipun saya biasanya menggunakan stringketika aku berencana menggunakannya seperti tipe data primitif (mirip dengan int, floatatau bool) dan Stringketika saya berencana menggunakannya sebagai objek / kelas. Sebagai contoh:

string foo = "   ";
if (String.isNullOrWhitespace(foo)) 
{
    // ...
}

Dalam kasus di atas, saya berencana menggunakan foohanya untuk menyimpan beberapa teks (efektif sebagai primitif), jadi saya menggunakan string; Namun, ketika saya menelepon String.isNullOrWhitespace(string)saya menggunakan String. Saya melakukan ini, karena umumnya huruf pertama dari nama kelas ditulis dengan huruf besar ( String) sedangkan huruf pertama dari primitif (seperti int) tidak.


-2

String digunakan dengan namespace System.String, string digunakan spesifikasi kompiler C #, apalagi System.String adalah nilai tipe referensi. Anda lebih suka berurusan dengan objek Sistem, string hanya untuk tujuan literal. Sistem dan sistem keduanya berfungsi sama.

string TC = new System.String('/', 5);

String digunakan untuk membandingkan, menyamakan dan keperluan lainnya juga.


4
ini sepertinya tidak menawarkan sesuatu yang substansial daripada 6 jawaban sebelumnya
agas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.