1. 程式人生 > >Parse 和 TryParse的區別

Parse 和 TryParse的區別

int.Parse()是一種類容轉換;表示將數字內容的字串轉為int型別。如果字串為空,則丟擲ArgumentNullException異常;如果字串內容不是數字,則丟擲FormatException異常;如果字串內容所表示數字超出int型別可表示的範圍,則丟擲OverflowException異常;
int.TryParse 與 int.Parse 又較為類似,但它不會產生異常,轉換成功返回 true,轉換失敗返回 false。最後一個引數為輸出值,如果轉換失敗,輸出值為 0

Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 四者都可以解釋為將型別轉換為 int,那它們的區別是什麼呢?

Convert.ToInt32 與 int.Parse 較為類似,實際上 Convert.ToInt32 內部呼叫了 int.Parse:

Convert.ToInt32 引數為 null 時,返回 0;
int.Parse 引數為 null 時,丟擲異常。

Convert.ToInt32 引數為 “” 時,丟擲異常;
int.Parse 引數為 “” 時,丟擲異常。

Convert.ToInt32 可以轉換的型別較多;
int.Parse 只能轉換數字型別的字串。
int.TryParse 與 int.Parse 又較為類似,但它不會產生異常,轉換成功返回 true,轉換失敗返回 false。最後一個引數為輸出值,如果轉換失敗,輸出值為 0。

**

int m; 
if(int.TryParse("2"),out m)
{
...
}

**
返回true ,執行{}內,並給m賦值為2;

if(int.TryParse("ddd"),out m)
{
...
}

返回false,不執行if{}內,並給m賦值為0;

使用Parse和TryParse轉換數字字串
基本數字型別包含Parse和TryParse方法,可用於將數字字串轉換為指定的數字型別,例如:

TryParse方法是.NET2.0中引入的,它能提供有條件的解析。這個方法會返回一個布林值,以指示解析是否成功,從而可以免去新增異常處理程式碼的麻煩。下面的例子使用了一個Int32型別來演示TryParse的兩種形式:

在第二種形式中,第一個引數是要解析的文字字串,第二個引數是NumberStyles列舉型別,它說明了輸入字串中可能包含的內容,返回值將放在第四個引數中返回。

舉個例子

 string a = "10";
    int result;
    if(int.TryParse(a, out result))
    {
        Console.WriteLine(result);  
    }
    else
    {
        Console.WriteLine("轉換失敗!");    
    }

一般情況下錯誤較多的地方是:引數型別;有可能轉換為整數的物件才能轉換。

string str="123";
int temp=int.parse(str);