In this article, we are going to learn how to convert string to bool in C#. We are going to see the various ways to accomplish that using the different methods: Convert.ToBoolean
, bool.Parse
, and boolTryParse
So, let’s talk more about that.
Using Convert.ToBoolean to Convert String to Bool
The Convert.ToBoolean
method has a lot of overloads. But in our example, to convert string
to bool
, we are going to use an overload that uses only a single string parameter:
Convert.ToBoolean(string stringName);
For the conversion to be successful the parameter that we pass must be either true
, false
or null
. This method ignores case letters as well as white spaces that occur before or after the string passed. Hence, passing any other value besides these will throw a FormatException
and the conversion will fail. To avoid breaking our application, we have to handle these Exceptions.
So, let’s see how this works with an example:
public static void ToBooleanMethod() { string[] validString = { null, "true", "True", " true ", "false", "False", " false" }; string[] invalidString = { "", string.Empty, "t", " yes ", "-1", "0", "1" }; var values = validString.Concat(invalidString); foreach (var value in values) { try { Console.WriteLine($"Converted '{value}' to {Convert.ToBoolean(value)}.\n"); } catch (FormatException) { Console.WriteLine($"Unable to convert '{value}' to a Boolean.\n"); } } }
Here, we concatenate both arrays in a single collection and iterate through each element trying to convert it to bool. So, once we execute this method, it will successfully convert all the strings within the validString
array to bool
. But it will not convert the strings from the invalidString
array.
Using bool.Parse to Convert String to Bool
bool.Parse
is another method we can use for converting string
to bool
in C#. The overload of this method we are going to use has one string parameter:
public static bool Parse (string stringName);
For the conversion to be successful the parameter that we pass must be either true
or false
. Also, this method ignores case letters as well as white spaces that occur before or after the string. That said if we pass null
or any other value it will throw an Exception and the conversion will fail:
public static void ParseMethod() { string[] validString = { "true", "True", " true ", "false", "False", " false" }; string[] invalidString = {null, "", string.Empty, "t", " yes ", "-1", "0", "1" }; var values = validString.Concat(invalidString); foreach (var value in values) { try { Console.WriteLine($"Converted '{value}' to {bool.Parse(value)}.\n"); } catch (Exception) { Console.WriteLine($"Unable to convert '{value}' to a Boolean.\n"); } } }
When we run our application, our output will be similar to the output we got when using Convert.ToBoolean
. However, the only difference will be the output when we pass a null
value into the bool.Parse
method.
Using the bool.TryParse Method
Lastly, we can use bool.TryParse
method to convert string
to bool
. To do this, we are going to use an overload of the method that has two parameters and returns a bool
:
public static bool TryParse (string? stringName, out bool booleanValue);
bool.TryParse
returns true
if the string was converted successfully or false
if it wasn’t. When we pass true
or false
as the parameter, the conversion will be successful. On the contrary, the conversion fails if we pass null
or any value not equal to true
or false
. Similar to Convert.ToBoolean
, this method ignores case letters as well as white spaces.
The out
parameter contains the result of the conversion. When the conversion fails, the value of the out
parameter will be false
.
So, let’s see how this works with an example:
public static void TryParseMethod() { string[] validString = { "true", "True", " true ", "false", "False", " false" }; string[] invalidString = { null, "", string.Empty, "t", " yes ", "-1", "0", "1" }; var values = validString.Concat(invalidString); foreach (var value in values) { if (bool.TryParse(value, out bool booleanValue)) { Console.WriteLine($"Conversion successful: '{value}' to {booleanValue}.\n"); } else { Console.WriteLine($"Conversion Failed: '{value}' to {booleanValue}.\n"); } } }
As you can see, we are not handling exceptions here as we did with our previous two examples. This means that bool.TryParse
is a more suitable method to use if we do not want to handle exceptions when the conversion fails.
Conclusion
In this article, we have learned how to convert string
to bool
using different methods and examples. We’ve even seen that with the bool.TryParse
method, we don’t have to handle exceptions during the conversion.
You should try
XmlConvert.ToBoolean
as well, and perhaps running them through benchmark.netHello James. Thanks for that method suggestion, it is nice to know that there are other alternatives as well.