2010-12-29 45 views
22

tôi đọc từ MSDN về Int32.TryParse()Int32.TryParse() trả về số không khi lỗi - thành công hay thất bại?

Khi phương pháp này trở về, chứa 32-bit ký giá trị số nguyên tương đương với số chứa trong s, nếu chuyển đổi thành công, hoặc không nếu chuyển đổi thất bại.

Nhưng điều gì sẽ xảy ra nếu chính chuỗi được truyền là biểu diễn chuỗi '0'. Vì vậy, TryParse sẽ trả về 0. Làm thế nào tôi có thể biết nếu nó là một thành công hay thất bại?

Trả lời

48

Không, TryParsetrả về đúng hoặc sai để cho biết thành công. Giá trị của tham số out được sử dụng cho giá trị được phân tích cú pháp hoặc 0 trên lỗi. Vì vậy:

int value; 
if (Int32.TryParse(someText, out value)) 
{ 
    // Parse successful. value can be any integer 
} 
else 
{ 
    // Parse failed. value will be 0. 
} 

Vì vậy, nếu bạn vượt qua "0", nó sẽ thực hiện khối đầu tiên, trong khi nếu bạn vượt qua "số xấu", nó sẽ thực thi khối thứ hai.

+0

Gosh! Lỗi của tôi. Tôi nên đóng SO trong khi tôi đang lập trình. Quá dễ dàng để đăng ở đây :). – NLV

+0

Bạn để lại một ')' ở cuối của bạn nếu. – BoltClock

+0

@BoltClock: Đã khắc phục, cảm ơn. –

5

Phương thức trả về thành công hoặc thất bại boolean. Dùng nó. Số nguyên là tham số tham chiếu được chuyển vào phương thức và không có gì liên quan đến giá trị trả về của phương thức.

Đây là nguyên mẫu của Int32.TryParse() từ số documentation. Nó rất rõ ràng rằng nó trả về một boolean. Tham số thứ hai là một out int có nghĩa là đối số được truyền theo tham chiếu, do đó, nó sẽ bị đột biến theo phương thức.

public static bool TryParse(
    string s, 
    out int result 
) 

Vì vậy, để kiểm tra thành công hay thất bại, làm điều này:

int value; 

if (Int32.TryParse("0", out value)) 
    Console.WriteLine("Parsed as " + value); 
else 
    Console.WriteLine("Could not parse"); 
2

TryParse() trả về một Boolean.

 Int32 testInt; 

     if (!Int32.TryParse("123", out testInt)) 
     { 
      MessageBox.Show("Is not a Int32!"); 
      return; // abbrechen 
     } 

     MessageBox.Show("The parst Int32-value is " + testInt); 
2

Phương pháp Int32.TryParse() trả về một giá trị boolean như lợi nhuận và cung cấp giá trị chuyển đổi như một tham số ra. Vì vậy, bạn có thể kiểm tra giá trị trả lại boolean cho trạng thái.

private static void TryToParse(string value) 
    { 
     int number; 
     bool result = Int32.TryParse(value, out number); 
     if (result) 
     { 
     Console.WriteLine("Converted '{0}' to {1}.", value, number);   
     } 
     else 
     { 
     if (value == null) value = ""; 
     Console.WriteLine("Attempted conversion of '{0}' failed.", value); 
     } 
    } 
0

sử dụng C# 7 bây giờ bạn có thể khai báo biến trong TryParse như ...

if (Int32.TryParse(someText, out int value)) 
{ 
    // Parse successful. value can be any integer 
} 
else 
{ 
    // Parse failed. value will be 0. 
} 
Các vấn đề liên quan