There are various methods available for explicitly converting a string
to an integer
, such as:
Convert.ToInt16();
Convert.ToInt32();
Convert.ToInt64();
int.Parse();
But all these methods will throw a FormatException
, if the input string contains non-numeric characters. For this, we need to write an additional exception handling(try..catch
) to deal them in such cases.
Explanation with Examples:
So, let our input be:
string inputString = "10.2";
Example 1: Convert.ToInt32()
int convertedInt = Convert.ToInt32(inputString); // Failed to Convert
// Throws an Exception "Input string was not in a correct format."
Note: Same goes for the other mentioned methods namely - Convert.ToInt16();
and Convert.ToInt64();
Example 2: int.Parse()
int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.
How do we circumvent this?
As told earlier, for handling the exceptions we usually need a try..catch
as shown below:
try
{
string inputString = "10.2";
int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
//Display some message, that the conversion has failed.
}
But, using the try..catch
everywhere will not be a good practice, and there may be some scenarios where we wanted to give 0
if the input is wrong, (If we follow the above method we need to assign 0
to convertedInt
from the catch block). To handle such scenarios we can make use of a special method called .TryParse()
.
The .TryParse()
method having an internal Exception handling, which will give you the output to the out
parameter, and returns a Boolean value indicating the conversion status (true
if the conversion was successful; false
if it failed). Based on the return value we can determine the conversion status. Lets see one Example:
Usage 1: Store the return value in a Boolean variable