Pergunta

Eu tenho essa função

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

e escrever var.myclass = null ;. Isto exige que o operador implícito e passa nulo como corda, o que provoca estragos no meu código (eu uso a reflexão e não gostaria de adicionar um caso especial). Como posso escrever myclass = null sem causar o operador implícito?

Eu tentei escrever

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

Mas isso faz com que um stackoverflow

Foi útil?

Solução

Eu acredito que o problema é que ambos os lados do operador ternário deve ser do mesmo ou compatível tipos.

Tente escrever

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

Editar : Eu só pode reproduzir o problema se eu fizer MyClass um struct, caso em que a sua pergunta é impossível; um struct não pode ser nulo.

Por favor, forneça mais detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top