Comment effectuer un null-check sur un objet dynamique?
Pseudo code:
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
}
Craignez-vous que l’objet dynamique ait un opérateur d’égalité personnalisé qui modifiera la façon dont la variable null
est interprétée? Si oui, utilisez simplement Object.ReferenceEquals
if (Object.ReferenceEquals(null, param)) {
.......
}
Vous pouvez toujours créer le param de type object, c'est ce que fait le compilateur. Lorsque vous tapez un paramètre dynamic, cela signifie simplement que, dans cette méthode, elle utilise uniquement un appel dynamique pour toutes les utilisations de param, mais à l'extérieur, il ne s'agit que d'une signature de type object. Une utilisation plus puissante de dynamicObject serait d’avoir des surcharges de la méthode que vous appelez. Par conséquent, si vous conservez votre exemple et que vous n’avez que deux surcharges, il appellerait l’une des deux méthodes en fonction du type d’exécution, et vous pourrez toujours ajouter plus pour plus de types.
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
}
Moyen rapide pourrait être:
if (_owner is null)
{
}
Vous pouvez utiliser la simplicité:
var s = data.servicePhoneNumber is null ? "" : data.servicePhoneNumber.Value;