2011-08-11 16 views

Respuesta

30

¿Está preocupado por la posibilidad de que el objeto dinámico tendrá un operador de igualdad a medida que va a cambiar la forma se interpreta la null? Si es así sólo tiene que utilizar Object.ReferenceEquals

if (Object.ReferenceEquals(null, param)) { 
    ....... 
} 
+3

+1 Sure. Puede perder el 'Objeto', aunque – Ani

+0

@Ani no está seguro de cuál es su meta. – JaredPar

+1

Podrías escribir 'ReferenceEquals (null, param)'. No puedo creer a partir de las ~ 5 preguntas sobre este tema en SO no lo resolvió así de simple. –

0

siempre puede hacer que el parámetro de tipo de objeto, que es lo que el compilador está haciendo. Cuando escribe un parámetro dinámico, significa que dentro de ese método solo está utilizando la invocación dinámica para todos los usos de param, pero afuera solo es una firma de tipo objeto. Un uso más poderoso de su dynamicObject sería tener sobrecargas del método que está llamando, por lo que si mantiene su ejemplo igual y solo tiene dos sobrecargas, llamaría a uno de los dos métodos según el tipo de tiempo de ejecución, y siempre podrá agrega más para más tipos.

public void Main() { 
    dynamic dynamicObject = 33; 
    if(true) { // Arbitrary logic 
     dynamicObject = null; 
    } 
    Method(dynamicObject); 
} 
public void Method(int param) { 
    //don't have to check check null 
    //only called if dynamicObject is an int 
} 
public void Method(object param) { 
// will be called if dynamicObject is not an int or null 
} 
Cuestiones relacionadas