2009-09-02 19 views
6

¿Cuándo es seguro usar fundición implícita?¿Cuándo debería usar el casting implícito?

Caso de uso: Estoy trabajando con un conjunto de objetos com que deben tenerse especialmente en cuenta (Marshal.ReleaseComObject). ¿Está bien crear una clase contenedora que implícitamente se convierta nuevamente en el objeto com real envuelto?

¿Cuáles son algunas situaciones cuando I no debería usar conversión implícita?

+4

Sólo para ser exigente: no hay tal cosa como "la conversión implícita". Puede usar un * operador * para decirle al compilador que realice una * conversión explícita *, o puede omitir el operador de conversión y realizar una * conversión implícita *, pero no hay * conversión implícita *. El * elenco * es lo que aparece en el código fuente; si no aparece allí, entonces no hay * cast *. –

Respuesta

1
  1. Necesita realizar este molde mucho.
  2. No hay forma de evitar el reparto.
  3. No está mejor representado como una función de conversión/proyección. Para decirlo de otra manera, tiene que ser "el mismo objeto" después del reparto.
  4. Puede realizar un viaje de ida y vuelta al objeto original. (Sin embargo, no implícitamente)
  5. No va a interferir con las sobrecargas de funciones existentes o posibles futuras.

generalmente resumo estos puntos como "nunca", pero irónicamente su caso de uso en realidad suena como un aficionado al ...

3

Debe usar la conversión implícita cuando (y solo cuando) esté seguro de que:
1. No se pierde (ni se puede perder) ninguna información (datos) durante la conversión.
2. No se puede lanzar ninguna excepción.
3. No se puede producir un error silencioso (recibirá datos degenerados).

Cuestiones relacionadas