Apa perbedaan antara Convert.ToString()
dan .ToString()
?
Saya menemukan banyak perbedaan online, tetapi apa perbedaan utama?
c#
type-conversion
tostring
TinTin
sumber
sumber
Jawaban:
Convert.ToString()
menanganinull
, sementaraToString()
tidak.sumber
null
mengembalikan string kosong atau melemparkan pengecualian? Ini seperti perbedaan antara casting dan menggunakanas
: konversi diam.Memanggil
ToString()
suatu objek mengandaikan bahwa objek tersebut bukan nol (karena suatu objek perlu ada untuk memanggil metode instance di atasnya).Convert.ToString(obj)
tidak perlu menganggap objek tidak null (karena merupakan metode statis pada kelas Convert), tetapi sebaliknya akan kembaliString.Empty
jika adalah nol.sumber
Convert.ToString(string value)
kembalinull
jika argumennya adalahnull
.Convert.ToString(object value)
kembaliString.Empty
jika argumennya adalahnull
.Selain jawaban lain tentang penanganan
null
nilai,Convert.ToString
coba gunakanIFormattable
danIConvertible
antarmuka sebelum memanggil pangkalanObject.ToString
.Contoh:
Hasil:
sumber
IConvertible
diutamakanIFormattable
, yang pada gilirannya mengambil prioritas di atasObject.ToString()
implementasi.Mari kita mengerti perbedaannya melalui contoh ini:
Kami dapat mengonversi bilangan bulat
i
menggunakani.ToString ()
atauConvert.ToString
. Jadi apa bedanya?Perbedaan mendasar di antara mereka adalah
Convert
fungsi menangani NULLS sementarai.ToString ()
tidak; itu akan melempar kesalahan pengecualian referensi NULL. Jadi praktik pengkodean yang baik menggunakanconvert
selalu aman.sumber
Anda bisa membuat kelas dan mengganti
toString
metode untuk melakukan apa pun yang Anda inginkan.Misalnya - Anda dapat membuat kelas "MyMail" dan mengganti
toString
metode untuk mengirim email atau melakukan operasi lain alih-alih menulis objek saat ini.The
Convert.toString
mengkonversi nilai tertentu untuk representasi string yang setara.sumber
sumber
Metode "pada dasarnya" sama, kecuali menangani null .
Dari MSDN:
Metode Convert.ToString
Object.ToString
sumber
null
,""
atau"null"
?Di
Convert.ToString()
, Konversi menanganiNULL
nilai atau tidak tetapi di.ToString()
dalamnya tidak menanganiNULL
nilai danNULL
kesalahan pengecualian referensi. Jadi itu adalah praktik yang baik untuk digunakanConvert.ToString()
.sumber
Bagi pecinta Kode, ini adalah jawaban terbaik.
sumber
Saya setuju dengan jawaban @ Ryan . Omong-omong, dimulai dengan C # 6.0 untuk tujuan ini Anda dapat menggunakan:
atau
dari pada
sumber
ToString()
tidak dapat menangani nilai nol danconvert.ToString()
dapat menangani nilai yang nol, jadi ketika Anda ingin sistem Anda menangani penggunaan nilai nolconvert.ToString()
.sumber
Convert.ToString(strName)
akan menangani nilai null-mampu danstrName.Tostring()
tidak akan menangani nilai nol dan melemparkan pengecualian.Jadi Lebih baik menggunakan
Convert.ToString()
maka.ToString();
sumber
Keduanya digunakan untuk mengkonversi tipe spesifik ke string yaitu int ke string, float ke string atau objek ke string.
ToString()
tidak dapat menangani null sementara dalam kasus denganConvert.ToString()
akan menangani nilai nol.Contoh:
sumber
Convert.ToString
jangan menanganiNull Exception
. itu cukup:return value == null ? string.Empty : value.ToString()
Untuk memahami kedua metode ini, mari kita ambil contoh:
Di sini kedua metode digunakan untuk mengkonversi string tetapi perbedaan mendasar di antara mereka adalah:
Convert
fungsi menanganiNULL
, sementarai.ToString()
tidak itu akan membuangNULL reference exception error.
Jadi sebagai praktik pengkodean yang baik menggunakanconvert
selalu aman.Mari kita lihat contoh lain:
sumber
Convert.ToString(value)
pertama mencoba casting obj ke IConvertible , lalu IFormattable untuk memanggilToString(...)
metode yang sesuai . Jika bukan nilai parameter itunull
kemudian kembalistring.Empty
. Sebagai upaya terakhir, kembalilahobj.ToString()
jika tidak ada yang berhasil.Perlu dicatat bahwa
Convert.ToString(value)
dapat mengembalikannull
jika misalnyavalue.ToString()
mengembalikan null.Lihat sumber referensi .Net
sumber
saya menulis kode ini dan mengkompilasinya.
dengan menggunakan 'reverse engineering' ( ilspy ) saya mencari tahu 'object.ToString ()' dan 'Convert.ToString (obj)' melakukan tepat satu hal. Infact 'Convert.ToString (obj)' call 'object.ToString ()' so 'object.ToString ()' lebih cepat.
sumber
Dalam C # jika Anda mendeklarasikan variabel string dan jika Anda tidak menetapkan nilai apa pun ke variabel itu, maka secara default variabel itu mengambil nilai nol. Dalam kasus seperti itu, jika Anda menggunakan metode ToString () maka program Anda akan melempar pengecualian referensi nol. Di sisi lain, jika Anda menggunakan metode Convert.ToString () maka program Anda tidak akan memberikan pengecualian.
sumber
Convert.Tostring()
pada dasarnya hanya memanggil yang berikut inivalue == null ? String.Empty: value.ToString()
(string)variable
hanya akan memberikan ketika ada operator implisit atau eksplisit pada apa yang Anda castingToString()
dapat ditimpa oleh tipe (ia memiliki kontrol atas apa yang dilakukannya), jika tidak itu menghasilkan nama tipeJelas jika suatu objek adalah nol , Anda tidak dapat mengakses anggota instance
ToString()
, itu akan menyebabkan pengecualiansumber
Fungsi Convert.Tostring () menangani NULL sedangkan metode .ToString () tidak. kunjungi di sini .
sumber