with - datetime parse c# ejemplos
¿Cuál es el punto de Convert.ToDateTime(bool)? (3)
Creo que está ahí para completar y que obtienes una InvalidCastException explícita cuando llamas a Convert.ToDateTime con un objeto que es un bool.
Si observa a todos los miembros de Convert, puede ver que se han incluido sobrecargas para aceptar todos los tipos básicos para la conversión a cada uno de los otros tipos básicos, con InvalidCastExceptions lanzadas cuando no hay una conversión razonable.
Supongo que pensaron que esto sería más significativo que simplemente no tener las sobrecargas allí en absoluto.
Estaba haciendo algunas rutinas de conversión de tipo anoche para un sistema en el que estoy trabajando. Una de las conversiones implica convertir valores de cadena en sus equivalentes de DateTime.
Mientras hacía esto, noté que el método Convert.ToDateTime () tenía una sobrecarga que aceptaba un parámetro booleano.
¿Primera pregunta? ¿Bajo qué circunstancias podría esto ser útil?
Fui un poco más lejos e intenté ejecutar el método en QuickWatch. De cualquier manera (verdadero o falso), la rutina devuelve una excepción InvalidCastException.
¿Segunda pregunta? ¿Por qué este método es incluso aquí?
EDITAR
Gracias por la respuesta chicos. Puedo ver cómo tiene sentido desde un punto de vista contractual, pero parece extraño que el marco central incluya métodos que:
- Nunca puede trabajar
- Peor aún, lanzará una excepción cuando alguien intente llamarla.
Es un poco como alguien que hace un automóvil cargado con controles que impiden activamente que su vehículo funcione cuando se usa.
Si observa detenidamente, la most de las sobrecargas no son válidas y lanzarán una InvalidCastException
.
Tiene que implementar todos los lanzamientos como implementa IConvertible
y esta es la única manera de hacerlo correctamente.
Tiene sentido porque ToDateTime
es parte de la interfaz IConvertible
implementada por bool
. Si te fijas en el reflector, verás que lanza una InvalidCastException
.
Actualización (desde Convert
):
public static DateTime ToDateTime(bool value)
{
return ((IConvertible) value).ToDateTime(null);
}