Apa perbedaan antara Parse () dan TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
Apakah ada bentuk pemeriksaan kesalahan seperti Coba-Catch Block?
Parse
melempar pengecualian jika tidak bisa mengurai nilai, sedangkan TryParse
mengembalikan yang bool
menunjukkan apakah itu berhasil.
TryParse
tidak hanya try
/ secara catch
internal - intinya adalah bahwa itu diimplementasikan tanpa pengecualian sehingga cepat. Faktanya, cara penerapannya kemungkinan besar adalah bahwa secara internal Parse
metode akan memanggil TryParse
dan kemudian mengeluarkan pengecualian jika kembali false
.
Singkatnya, gunakan Parse
jika Anda yakin nilainya akan valid; jika tidak gunakan TryParse
.
Jika string tidak dapat diubah menjadi integer, maka
int.Parse()
akan mengeluarkan pengecualianint.TryParse()
akan mengembalikan false (tetapi tidak membuat pengecualian)sumber
Metode TryParse memungkinkan Anda menguji apakah ada sesuatu yang dapat diurai. Jika Anda mencoba Parse seperti pada contoh pertama dengan int yang tidak valid, Anda akan mendapatkan pengecualian saat berada di TryParse, ia mengembalikan boolean yang memberi tahu Anda apakah parse berhasil atau tidak.
Sebagai catatan kaki, meneruskan null ke sebagian besar metode TryParse akan memunculkan pengecualian.
sumber
TryParse dan Exception Tax
Parse melontarkan pengecualian jika konversi dari string ke jenis data yang ditentukan gagal, sedangkan TryParse secara eksplisit menghindari pelemparan pengecualian.
sumber
TryParse tidak mengembalikan nilai, ia mengembalikan kode status untuk menunjukkan apakah parse berhasil (dan tidak memunculkan pengecualian).
sumber
Sebagai catatan, saya menguji dua kode: Itu hanya mencoba untuk mengubah dari string menjadi angka dan jika gagal maka tetapkan angka ke nol.
dan:
Untuk c #, opsi terbaik adalah menggunakan tryparse karena alternatif try & Catch mengeluarkan pengecualian
Itu menyakitkan lambat dan tidak diinginkan, bagaimanapun, kode tidak berhenti kecuali pengecualian Debug diselesaikan untuk berhenti dengannya.
sumber
Saya tahu ini posting yang sangat lama tetapi berpikir untuk membagikan beberapa detail lebih lanjut tentang Parse vs TryParse.
Saya punya skenario di mana DateTime perlu dikonversi ke String dan jika datevalue null atau string.empty kami menghadapi pengecualian. Untuk mengatasi ini, kami telah mengganti Parse dengan TryParse dan akan mendapatkan tanggal default.
Kode Lama:
Kode Baru:
Harus mendeklarasikan variabel lain dan digunakan sebagai Out for TryParse.
sumber
startDate
danendDate
karenaDateTime.TryParse
akan selalu menimpanya denganDateTime.MinValue
. Jika representasi tanggal yang salah harus dikonversi ke nilai yang berbeda, periksa nilai yang dikembalikanDateTime.TryParse
dan jika salah, setel nilainya secara eksplisit.DateTime?
( DateTime nullable )double.Parse ("-"); memunculkan pengecualian, sementara double.TryParse ("-", out parsed); parsing ke 0 jadi saya kira TryParse melakukan konversi yang lebih kompleks.
sumber
TryParse
kembalitrue
ataufalse
? Begitulah cara Anda mengetahui apakah itu "valid".