Cấp bậc tác giả:

TRAINING

Sự khác nhau giữa Int32.Parse(), Convert.ToInt32(), và Int32.TryParse()

Được viết bởi QuangIT ngày 13/07/2013 lúc 09:47 PM
Int32.parse(string s): là phương thức chuyển đổi chuỗi ra số nguyên (32 bit) tương đương. Khi s là giá trị rỗng (null) kết quả trả về sẽ là ArgumentNullException. Nếu s khác với kiểu số ngyên kết quả trả về sẽ là FormatException. Hoặc sẽ trả về OverflowException nếu s có kiểu số quá lớn (>MaxValue) hoặc quá nhỏ (
  • 0
  • 26570

Sự khác nhau giữa Int32.Parse(), Convert.ToInt32(), và Int32.TryParse()

Int32.parse(string s): là phương thức chuyển đổi chuỗi ra số nguyên (32 bit) tương đương. Khi s là giá trị rỗng (null) kết quả trả về sẽ là ArgumentNullException. Nếu s khác với kiểu số ngyên kết quả trả về sẽ là FormatException. Hoặc sẽ trả về OverflowException nếu s có kiểu số quá lớn (>MaxValue) hoặc quá nhỏ (<MinValue) - (vượt miền).

Ví dụ:
string s1 = "1234";
string s2 = "1234.56";
string s3 = null;
string s4 = "123456789123456789123456789123456789123456789";
 
int ketqua;
bool success;
 
ketqua = Int32.Parse(s1); //-- 1234
ketqua = Int32.Parse(s2); //-- FormatException
ketqua = Int32.Parse(s3); //-- ArgumentNullException
ketqua = Int32.Parse(s4); //-- OverflowException
Convert.ToInt32(string s): tương tự như với Int32.parse(string). Tuy nhiên, khi s là chuỗi khác với dãy số nguyên, thì kết quả trả về sẽ là 0 chứ không phải là ArgumentNullException.

Ví dụ:
ketqua = Convert.ToInt32(s1); //-- 1234
ketqua = Convert.ToInt32(s2); //-- FormatException
ketqua = Convert.ToInt32(s3); //-- 0
ketqua = Convert.ToInt32(s4); //-- OverflowException
bool Int32.TryParse(string s,int giatri): Cố gắn đổi số trong chuỗi s thành số nguyên 32 bit, kết quả chuyển đổi sẽ được gán trong biến value. Tuy nhiên, Tuy nhiên chuyển đổi thành công hay không thì kết quả trả về bởi hàm bool. Dựa vào hàm này, ta có thể kiểm tra xem 1 chuỗi có thể biểu diễn ra số nguyên hay không?

Ví dụ:
success = Int32.TryParse(s1, int ketqua); //-- success => true; ketqua=> 1234
success = Int32.TryParse(s2, int ketqua); //-- success => false; ketqua=> 0
success = Int32.TryParse(s3, int ketqua); //-- success => false; ketqua=> 0
success = Int32.TryParse(s4, int ketqua); //-- success => false; ketqua=> 0
Ta có thể thấy Convert.ToInt32 là tốt hơn Int32.Parse, vì nó trả về 0 thay vì trả về ArgumentNullException khi s không biểu diễn được ở dạng số nguyên. Nhưng ở đây, ta có cách tốt nhất, đó là sử dụng Int32.TryParse, hàm không trả về các lỗi ngoại lệ, mà trả về giá trị 0 và kết quả cho biến bool.

Nguồn bài viết: Sưu tầm

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML