|
|
|
|
|
|
C# int.Parse()和Convert.ToInt32()都是把數字字符串轉換為整數的方法,多數情況下,它們返回的結果是一樣的,因此用哪個都可以。但是,并不是任何時候兩個方法的返回結果都一樣,本文將介紹int.Parse()和Convert.ToInt32()的主要區別。
實例
當傳輸null給兩個方法時,我們就會看到它們的不同。
string inputNullString = null;
try
{
var outputInteger = int.Parse(inputNullString);
Console.WriteLine(outputInteger);
}
catch (ArgumentNullException ex)
{
Console.WriteLine("The int.Parse() method throws ArgumentNullException.");
}
var outputIntegerWithConvert = Convert.ToInt32(inputNullString);
Console.WriteLine($"The value of the outputIntegerWithConvert variable is: {outputIntegerWithConvert}");
這里,我們傳遞一個空值(null),并看到預期的差異:
輸出
The int.Parse() method throws ArgumentNullException.
The value of the outputIntegerWithConvert variable is: 0
int.Parse()方法無法分析字符串,因此,它拋出了ArgumentNullException。但是Convert.ToInt32()方法未引發異常,它返回了0。所以,如果我們使用Convert.ToInt32()方法,就不必擔心null。
這是使用Convert.ToInt32()方法而不是int.Parse()方法的一個優點。
什么時候使用int.Parse() 和 Convert.ToInt32()?
如果我們知道總是以字符串形式獲取整數,那么可以使用int.Parse()方法。但是,如果字符串可能為null或對象或其他類型,我們應該使用Convert.ToInt32()方法。
在討論這些方法的同時,我們還要提到一個int.TryParse()方法,它提供了一種更好的方法來將字符串解析為整數。參考以下文章:
int.TryParse() 方法
int.TryParse()方法將字符串轉換為整數,但它還返回一個值,指示操作是否成功。因此,我們可以將任何類型的值傳遞給它。
如果成功轉換為整數,則將該整數保存到輸出變量中,并返回true,否則返回false:
if (int.TryParse(" 123 ", out var outputInteger))
Console.WriteLine($"輸出: {outputInteger}"); // 輸出: 123我們將“123”作為字符串傳遞給int.TryParse()方法,并將outputInteger作為out參數傳遞給該方法。由于它是一種有效的整數格式,int.TryParse()方法成功地將字符串轉換為整數,并執行if塊。但如果轉換失敗,整數將默認為0。
在這兩種情況下,都沒有例外,這意味著我們可以在int.TryParse()方法中傳遞任何字符串值。同樣,如果我們不確定字符串是否可解析,那么應該使用int.TryParse()方法。除了避免異常,它比我們討論的其他兩種方法更快。
總結
在本文中,我們學習了int.Parse()方法和Convert.ToInt32()方法及其差異。我們還討論了int.TryParse()方法,以及為什么它優于前兩種方法。
相關文章
