No es el único. Convert.ToBoolean (char), ToDateTime, ToDecimal y ToSingle tampoco son compatibles, todos arrojan InvalidCastException como lo hace ToDouble.
Este es solo el diseño .NET que intenta mantenerte fuera de problemas. La conversión de un char a un tipo integral es razonable, puede mirar las tablas de asignación de Unicode y contar los puntos de código. Pero, ¿qué significaría una conversión a Boolean? ¿Qué punto de código Unicode es Verdadero? ToDateTime no requiere explicación. ¿Cómo podría un personaje ser un valor fraccionario? No hay puntos de código de la mitad o del cuarto.
puede hacer que funcione, primero conviértase a Int32 y luego conviértalo en Doble. Pero, por supuesto, verifique su código y asegúrese de que sea un sentido de la vida que hacer. Los diseñadores de .NET pensaron que no. Tenían razón.
Probablemente porque tenía que ser, para alguna interfaz, IConvertible, tal vez? O solo para mantener un estándar.No lo dejes perder y buscar, pero dile "aquí está, no lo uses" – SimpleVar
@YoryeNathan 'Convert' es una clase estática, no implementa ninguna interfaz. 'Char' implementa' IConvertible', y * its * 'ToDouble' es necesario para eso, pero' Convert' no lo necesita. Su alternativa, "mantener un estándar", puede ser correcta. – hvd
@hvd Tienes razón. Eso fue tonto de mi parte – SimpleVar