cref - C#: Cómo realizar una comprobación nula en un objeto dinámico
remarks c# (3)
¿Le preocupa la posibilidad de que el objeto dinámico tenga un operador de igualdad personalizado que cambie la forma en que se interpreta el null
? Si es así solo usa Object.ReferenceEquals
if (Object.ReferenceEquals(null, param)) {
.......
}
¿Cómo realizo una comprobación nula en un objeto dinámico?
Pseudo código:
public void Main() {
dynamic dynamicObject = 33;
if(true) { // Arbitrary logic
dynamicObject = null;
}
Method(dynamicObject);
}
public void Method(dynamic param) {
// TODO: check if the content of ''param'' is equal to null
}
Puedes usar la simplicidad:
var s = data.servicePhoneNumber is null ? "" : data.servicePhoneNumber.Value;
Siempre puedes hacer el parámetro de tipo objeto, eso es lo que hace el compilador. Cuando se escribe un parámetro dinámico, solo significa que dentro de ese método solo se usa la invocación dinámica para todos los usos de param, pero fuera de ella solo es una firma de tipo objeto. Un uso más poderoso de su dynamicObject sería tener sobrecargas del método al que está llamando, por lo que si mantiene su ejemplo igual y solo tiene dos sobrecargas, llamará a uno de los dos métodos basados en el tipo de tiempo de ejecución, y siempre puede Añadir 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
}