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
}
+1 Sure. Puede perder el 'Objeto', aunque – Ani
@Ani no está seguro de cuál es su meta. – JaredPar
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. –