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