2010-12-09 11 views
8

Simplemente curioso, MSDN dice que¿Por qué existe Convert.ToInt32 (DateTime)?

se llama a este método siempre lanza InvalidCastException.

Entonces, ¿por qué existe esta sobrecarga en el marco? ¿Sigue algún tipo de patrón? Supongo que por compatibilidad con versiones anteriores sería mejor eliminar la sobrecarga y recibir errores de compilación en lugar de excepciones de tiempo de ejecución. Sin embargo, no recuerdo si este método fue realmente compatible con los marcos anteriores.

+0

Bueno, si no existiera este método, sería utilizar el 'Convert.ToInt32 (Objeto)' sobrecarga de todos modos, lo que presumiblemente la misma excepción . – cdhowie

+0

Tengo curiosidad por saber qué valor espera obtener de este método. (milisegundos no cabrán) Además, el patrón que sigue es, creo, el mismo método que se encuentra en 'IConvertible'. –

+0

@Kirk, no creo que ese fuera mi punto. Solo estoy preguntando por qué existe, incluso si no puede usarlo ... –

Respuesta

1

Creo que IConvertable requiere que esto se implemente.

+4

Este es un método estático ... – cdhowie

+0

Creo que el método estático llama al método de instancia en el parámetro que se pasa en él, es decir, Convert.ToInt32 (IConvertible obj) – poindexter12

+2

@poindexter: Correcto; lo hace. Sin embargo, todavía no debería existir. – SLaks

4

Como se puede ver en la documentación en el enlace que proporciona:

Observaciones

Este método está reservado para futuras uso.

Simplemente no han encontrado una implementación con la que estén satisfechos o es necesario, pero están planeando que sea así.

+0

en realidad, no veo las Observaciones en mi enlace ... mmm ... pero independientemente de por qué lo tengo en el Marco si no hay uso para él en este momento? –

+0

@Stan R. - Sabes que tienes razón.Mi navegador lo envió automágicamente a la versión 2.0. La observación está ahí. Mi suposición es que todavía es relevante hoy ya que la implementación es idéntica. En respuesta a su otra pregunta, solo el equipo de implementación de este objeto puede decirle con sinceridad, pero sospecho que las otras respuestas no han fallado la marca por mucho o nada. –

+1

Estoy de acuerdo, solo digo que es como introducir la palabra clave "dinámica" en 2.0 y decir que es para uso futuro ... simplemente no tendría sentido, ¿verdad? –

0

Supongo que solo llama a DateTime.IConvertible.ToInt32 Method que a su vez es responsable de arrojar esa excepción. ¡Un día hará la conversión y Convert.ToInt32(DateTime) funcionará sin ningún cambio!

+2

Hasta ese día, es solo un error sutil. Además, siempre pueden agregar esa sobrecarga más adelante. – SLaks

-1

Simplemente lo ponen en la documentación, nada especial. Si esto no existe, la misma condición puede ser:

Convert.ToInt32(Object) 
+2

esa no es la misma condición ... puede pasar * cadena * a ToInt32 (Objeto) que funcionaría, pero no DateTime, eso tendría sentido para mí, pero tienen un método distinto sobrecargado que simplemente no funciona. –

Cuestiones relacionadas