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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top