What is the difference between the two methods
Convert.ToBoolean()
and
Boolean.Parse()
?
Is there any reason to use one or the other?
Additionally, are there any other type.Parse()
methods that I should watch out for?
Thanks,
Matt
ToBoolean(Object) Converts the value of a specified object to an equivalent Boolean value. ToBoolean(Decimal) Converts the value of the specified decimal number to an equivalent Boolean value. ToBoolean(Int32)
The value parameter, optionally preceded or trailed by white space, must contain either TrueString or FalseString; otherwise, an exception is thrown. The comparison is case-insensitive.
open System let values = [ null; String. Empty; "True"; "False" "true"; "false"; " true "; "0" "1"; "-1"; "string" ] for value in values do match Boolean. TryParse value with | true, flag -> printfn $"'{value}' --> {flag}" | false, _ -> printfn $"""Unable to parse '%s{if value = null then "<null>" else value}'.
Convert.ToBoolean(string)
actually calls bool.Parse()
anyway, so for non-null string
s, there's no functional difference. (For null string
s, Convert.ToBoolean()
returns false
, whereas bool.Parse()
throws an ArgumentNullException
.)
Given that fact, you should use bool.Parse()
when you're certain that your input isn't null, since you save yourself one null check.
Convert.ToBoolean()
of course has a number of other overloads that allow you to generate a bool
from many other built-in types, whereas Parse()
is for string
s only.
In terms of type.Parse() methods you should look out for, all the built-in numeric types have Parse()
as well as TryParse()
methods. DateTime
has those, as well as the additional ParseExact()
/TryParseExact()
methods, which allow you specify an expected format for the date.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With