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

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

Đăng vào ngày 13 Tháng Mười 2010 lúc 12:15 bởi Duy Khánh Mục: IT, C#  ||  Tags: ,    Bình luận (5)

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.

Duy Khánh - http://Khanh.Com.Vn

 

Bình luận (5) -

Seiokita
Seiokita
23/02/2011 1:20:32 SA #

Chị nghĩ em nên đề tên người viết hoặc link em dịch bài viết này từ internet, đó cũng là cách thể hiện sự tôn trọng chính em đó Laughing

HACKER.NO1
HACKER.NO1
22/05/2012 8:12:59 CH #

haha chị này nói phải Laughing

Chưa biết
Chưa biết
17/05/2013 6:10:07 CH #

Nếu đây là tác giả bài viết thì sao hả Seiokita? Nếu bạn biết nguồn ở nơi khác thì hãy chỉ rõ cho tác giả ở đây, đừng nói người ta như thế. Còn tên "3 phải" HACKER.NO1 thì không chấp!

trungdung010792
trungdung010792
04/06/2013 9:38:42 SA #

Int32 khac int cho nao

trungdung010792
trungdung010792
04/06/2013 9:40:40 SA #

cho em ket qua som nha thank

Nghe nhạc cho vui

Ghi Chú

+ command "netstat -ano": IPs access

+ Restore dữ liệu trên SQLServer bằng dòng lệnh

RESTORE DATABASE db_name
FROM DISK = 'E:\db.BAK'
WITH REPLACE

+ Cover từ VB.NET sang C#

http://developerfusion.com/tools/convert/vb-to-csharp/

Certifications