Convert.ToDateTime (D) en comparación con (DateTime) D

Si tengo un valor D y quiero asegurarme de que es de tipo datetime, ¿hay alguna diferencia entre lo siguiente?

  1. DateTime dtm = Convert.ToDateTime(D)
  2. DateTime dtm = (DateTime)D

1 es una conversión mientras que 2 es una conversión? (Supongo que en ciertos aspectos 2 es una operación más ligera ?)
¿Cuándo debo usar 1 en lugar de 2?


Editar

(contexto de la pregunta)

D es de una celda en un DataTable . Lo que estoy haciendo es encontrar las celdas que son fechas (a través de datatable.columnname ) y luego aplicar la función ToOADate al resultado antes de moverlo a xl. Entonces, si dr es mi DataRowView entonces tengo una de las siguientes alternativas:

 //Convert DateTime dtm; dtm = Convert.ToDateTime(dr[i - 1]); xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate(); //Cast DateTime dtm; dtm = (DateTime)dr[i - 1]; xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate(); 

Convert.ToDateTime tiene varias sobrecargas que convertirán otros tipos a DateTime . Se debe usar cuando se está convirtiendo una instancia que no es un DateTime a una instancia de DateTime. También puede usar DateTime.Parse y DateTime.TryParse (si está intentando analizar una representación de cadena).

(DateTime)D intenta convertir directamente una instancia a DateTime . Si la instancia no es ya un DateTime antes de la llamada, se lanzará una excepción.

Usando la clase “Convertir” puedes convertir entre diferentes tipos. Por ejemplo, puede convertir una cadena en un DateTime. El casting solo funciona en los mismos tipos. Por lo tanto, no puede convertir una Cadena en un Int32 ya que esto generaría una excepción de lanzamiento.

Con respecto a su ejemplo: si el contenido de D es siempre del tipo DateTime, entonces debería preferir el envío porque el lanzamiento es muy rápido. En caso de que no sepa qué tipo está dentro de D (tal vez porque es de tipo Objeto), es posible que prefiera convertirlo, ya que es más elegante que la conversión simple, ya que este método le permite configurar el DateTime también por cadena (Fecha String) o por Int32 (ticks).