- Apa perbedaan utama antara
int.Parse()
danConvert.ToInt32()
? - Yang mana yang lebih disukai
Jika Anda memiliki string, dan Anda mengharapkannya selalu berupa integer (katakanlah, jika beberapa layanan web memberi Anda integer dalam format string), Anda akan menggunakannya Int32.Parse()
.
Jika Anda mengumpulkan input dari pengguna, Anda biasanya akan menggunakan Int32.TryParse()
, karena hal itu memungkinkan Anda mengontrol lebih baik situasi ketika pengguna memasukkan input yang tidak valid.
Convert.ToInt32()
mengambil objek sebagai argumennya. (Lihat jawaban Chris S untuk cara kerjanya)
Convert.ToInt32()
juga tidak membuang ArgumentNullException
ketika argumennya nol seperti yang Int32.Parse()
dilakukannya. Itu juga berarti bahwa Convert.ToInt32()
mungkin sedikit lebih lambat daripada Int32.Parse()
, meskipun dalam praktiknya, kecuali jika Anda melakukan iterasi yang sangat besar dalam satu lingkaran, Anda tidak akan pernah melihatnya.
ToInt32
metode ini memiliki kelebihan untuk banyak jenis, ada di antara merekaSystem.String
, tidak ada waktu akan hilang melihat jenis. Kode aktual tidak melakukan apa pun kecuali mengembalikan 0 untuk nilai nol, danint.Parse(value, CultureInfo.CurrentCulture)
untuk semua yang lain.Int32.TryParse()
diConvert.ToInt32()
karena tidak benar. Konversi melempar pengecualian jika string tidak diformat dengan benar.Lihatlah reflektor:
int.Parse ("32"):
yang merupakan panggilan ke:
Convert.ToInt32 ("32"):
Seperti komentar pertama (Dave M).
sumber
Convert.ToInt32
mengembalikan0
jikanull
untuk mencegahint.Parse
menaikkanArgumentNullException
.default(int)
dievaluasi pada waktu kompilasi, karena nilai intrinsiknya - hasil dari ekspresi tersebut0
, sehingga kompiler memasukkan literal0
. Alat pembongkaran IL tidak dapat mengetahui lebih baik, jadi mereka hanya menunjukkan nol secara literal.Tidak ada perbedaan seperti itu.
Convert.ToInt32()
panggilanint.Parse()
internalKecuali untuk satu hal
Convert.ToInt32()
kembali0
ketika argumennyanull
Kalau tidak, keduanya bekerja dengan cara yang sama
sumber
Convert.ToInt32(string)
panggilanint.Parse
internal.Convert.ToInt32(object)
, bagaimanapun, panggilan((IConvertible) value).ToInt32
, yang dalam kasusstring
panggilanConvert.ToInt32(string)
... sedikit berbelit-belit ...int.Parse (string s)
Convert.ToInt32 (string s)
bool isParsed = int.TryParse (string s, out res)
Coba kode ini di bawah ini .....
sumber
Perbedaannya adalah ini:
Int32.Parse()
danInt32.TryParse()
hanya dapat mengonversi string.Convert.ToInt32()
dapat mengambil kelas apa pun yang mengimplementasikanIConvertible
. Jika Anda meneruskannya string, maka mereka setara, kecuali bahwa Anda mendapatkan overhead tambahan untuk perbandingan tipe, dll. Jika Anda mengonversi string, makaTryParse()
mungkin merupakan opsi yang lebih baik.sumber
Int32.parse (string) --->
Metode Int32.Parse (string s) mengubah representasi string dari angka menjadi setara integer bertanda 32-bit. Ketika s adalah referensi nol, itu akan membuang ArgumentNullException. Jika s selain nilai integer, ia akan membuang FormatException. Ketika s mewakili angka kurang dari MinValue atau lebih besar dari MaxValue, ia akan melempar OverflowException. Sebagai contoh :
Metode Convert.ToInt32 (string) -> Convert.ToInt32 (string s) mengubah representasi string yang ditentukan dari setara integer bertanda 32-bit. Ini panggilan pada gilirannya metode Int32.Parse (). Ketika s adalah referensi nol, itu akan mengembalikan 0 daripada membuang ArgumentNullException. Jika s selain nilai integer, ia akan membuang FormatException. Ketika s mewakili angka kurang dari MinValue atau lebih besar dari MaxValue, ia akan melempar OverflowException.
Sebagai contoh:
sumber
TryParse lebih cepat ...
Sumber dengan contoh-contoh
Semoga ini membantu.
sumber
memiliki 19 kelebihan atau 19 cara berbeda yang bisa Anda sebut itu. Mungkin lebih banyak di versi 2010.
Ini akan berusaha untuk mengkonversi dari JENIS-JENIS berikut;
dan ia juga memiliki sejumlah metode lain; satu hubungannya dengan basis angka dan 2 metode melibatkan a
System.IFormatProvider
Parse di sisi lain hanya memiliki 4 kelebihan atau 4 cara Anda dapat memanggil metode.
sumber
Itu tergantung pada tipe parameter. Sebagai contoh, saya baru menemukan hari ini bahwa itu akan mengkonversi char langsung ke int menggunakan nilai ASCII-nya. Tidak persis fungsionalitas yang saya maksudkan ...
ANDA TELAH DIPERINGATKAN!
sumber
char
mengkonversi secara implisit kestring
dalam C #? Jelas bisa di VB.NET, dan programmer dalam bahasa itu kemungkinan akan berharapConvert.ToInt32("1"c)
danConvert.ToInt32("1")
setara, tapi saya tidak berpikir C # memiliki konversi tersirat.char
nilai-nilai sebagai angka-ish sedikit lebih banyak daripada vb.net. Bahayanya akan lebih besar di vb.net, di mana ada karena pemeran implisit ada sedikit perbedaan antaraChar
danString
.Berikut adalah detail untuk
int.Parse
danConvert.ToInt32
: Katakanlah, Anda memiliki array char,char[] a=['1','2','3','4']
dan ingin mengkonversi setiap elemen menjadi integer. IniConvert.ToInt32(a[0])
akan memberi Anda jumlah 49. Ini memperlakukannya sebagai kode ASCII. Iniint.Parse(a[0])
akan memberi Anda output yang tepat yaitu 1Jika Anda memiliki larik string
string[] b=['1','2','3','4']
, makaConvert.ToInt32
dan tidakint.Parse
akan ada perbedaan dalam output. Keduanya mengembalikan integer yang tepat.sumber
Convert.ToInt32 memungkinkan nilai nol, itu tidak menimbulkan kesalahan Int.parse tidak mengizinkan nilai nol, itu melempar kesalahan ArgumentNullException.
sumber
untuk klarifikasi aplikasi konsol terbuka, cukup salin kode di bawah ini dan rekatkan dalam
static void Main(string[] args)
metode, saya harap Anda bisa mengertisumber
Metode Parse () memberikan gaya angka yang tidak dapat digunakan untuk Konversi (). Sebagai contoh:
akan mem-parsing angka dengan tanda trailing sehingga saya == -123
Tanda trailing populer di sistem ERP.
sumber