¿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
Respuestas:
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ícelo ToBoolean()
, 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 llame Parse()
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, porque bool.TrueString != "true"
solobool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
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()
.