¿Cuál es la diferencia entre los dos métodos?
Convert.ToBoolean()
y
Boolean.Parse()
?
¿Hay alguna razón para usar uno u otro?
Además, ¿hay otros type.Parse()
métodos que deba tener en cuenta?
Gracias,
Mate
Convert.ToBoolean(string)
en realidad llama de bool.Parse()
todos modos, por lo que para s no nulos string
, no hay diferencia funcional. (Para string
s nulos , Convert.ToBoolean()
devuelve false
, mientras que bool.Parse()
arroja an ArgumentNullException
.)
Dado ese hecho, debe usarlo bool.Parse()
cuando esté seguro de que su entrada no es nula, ya que se ahorra una verificación nula.
Convert.ToBoolean()
por supuesto, tiene una serie de otras sobrecargas que le permiten generar un a bool
partir de muchos otros tipos integrados, mientras que Parse()
es string
solo para s.
En términos de type.Parse () métodos que usted debe tener en cuenta, toda la incorporada en los tipos numéricos tienen Parse()
, así como TryParse()
métodos. DateTime
tiene esos, así como los métodos ParseExact()
/ adicionales TryParseExact()
, que le permiten especificar un formato esperado para la fecha.
Parse()
si usa si está seguro de que la entrada no es una cadena nula . Si no está seguro, utilíceloToBoolean()
, ya que hará la verificación por usted. Y si no desea que una cadena nula dé como resultado falso, realice la verificación usted mismo y luego llameParse()
si no es nula.Aquí está la breve demostración:
object ex1 = "True"; Console.WriteLine(Convert.ToBoolean(ex1)); // True Console.WriteLine(bool.Parse(ex1.ToString())); // True object ex2 = "true"; Console.WriteLine(Convert.ToBoolean(ex2)); // True Console.WriteLine(bool.Parse(ex2.ToString())); // True object ex3 = 1; Console.WriteLine(Convert.ToBoolean(ex3)); // True Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException object ex3 = "1"; Console.WriteLine(Convert.ToBoolean(ex3)); // An unhandled exception of type 'System.FormatException' occurred Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException object ex4 = "False"; Console.WriteLine(Convert.ToBoolean(ex4)); // False Console.WriteLine(bool.Parse(ex4.ToString())); // False object ex5 = "false"; Console.WriteLine(Convert.ToBoolean(ex5)); // False Console.WriteLine(bool.Parse(ex5.ToString())); // False object ex6 = 0; Console.WriteLine(Convert.ToBoolean(ex6)); // False Console.WriteLine(bool.Parse(ex6.ToString())); // Unhandled Exception: System.FormatException object ex7 = null; Console.WriteLine(Convert.ToBoolean(ex7)); // False Console.WriteLine(bool.Parse(ex7.ToString())); // Unhandled Exception: System.NullReferenceException
Nota: También hay dos propiedades de
bool
TrueString y FalseString, pero tenga cuidado, porquebool.TrueString != "true"
solobool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True Console.WriteLine(bool.FalseString); // False
fuente
Convert.ToBoolean("1"); // Format Exception
Boolean.Parse()
convertirá una representación de cadena de un valor booleano lógico en un valor booleano.Convert.ToBoolean()
tiene múltiples sobrecargas que convertirán tipos primitivos en su equivalente booleano.La mayoría, si no todos, de los tipos primitivos en C # tienen un método * .Parse / Convert.To * asociado que tiene el mismo propósito que
Boolean.Parse()/Convert.ToBoolean()
.fuente