Domanda

Ho questa funzione

public static implicit operator MyClass(string v) { return new MyClass(v); }

e scrivere var.myclass = null ;. Ciò richiede l'operatore implicita e passa NULL come stringa, che provoca il caos nel mio codice (io uso di riflessione e non vorrei aggiungere un caso speciale). Come posso scrivere myclass = null senza causare l'operatore implicita?

Ho provato a scrivere

public static implicit operator MyClass(string v) { return  v == null ? null : new MyClass(v); }

Ma che causa uno StackOverflow

È stato utile?

Soluzione

Credo che il problema è che entrambi i lati del l'operatore ternario devono essere dello stesso o di tipi compatibili.

Provare a scrivere

if (v == null)
    return null;
else
    return new MyClass(v);

Modifica : posso riprodursi solo il problema se faccio MyClass una struct, nel qual caso la tua domanda è impossibile; una struct non può essere nullo.

Si prega di fornire ulteriori dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top