Problème avec la conversion et nulle implicite
-
18-09-2019 - |
Question
J'ai cette fonction
public static implicit operator MyClass(string v) { return new MyClass(v); }
et écrire var.myclass = null ;. Cela appelle l'opérateur implicite et passe nulle sous forme de chaîne, ce qui provoque des ravages dans mon code (j'utilise la réflexion et ne voudrais pas ajouter un cas particulier). Comment puis-je écrire maclasse = nulle sans provoquer l'opérateur implicite?
J'essayé d'écrire
public static implicit operator MyClass(string v) { return v == null ? null : new MyClass(v); }
Mais cela provoque une stackoverflow
La solution
Je crois que votre problème est que les deux côtés de l'opérateur ternaire doivent être des types identiques ou compatibles.
Essayez d'écrire
if (v == null)
return null;
else
return new MyClass(v);
EDIT : Je ne peux reproduire votre problème si je fais MyClass
un struct, dans ce cas, votre question est impossible; une struct ne peut pas est nulle.
S'il vous plaît fournir plus de détails.