C #: Como isso funciona: Unidade myUnit = 5;
-
03-07-2019 - |
Pergunta
Eu notei que você pode fazer isso em C #:
Unit myUnit = 5;
em vez de ter que fazer isso:
Unit myUnit = new Unit(5);
Alguém sabe como posso conseguir isso com minhas próprias estruturas? Eu tinha um olhar para a estrutura Unit com refletor e notou o atributo TypeConverter estava sendo usado, mas depois eu criei um personalizado TypeConverter para o meu struct eu ainda não podia obter o compilador para permitir essa sintaxe conveniente.
Solução
Você precisa fornecer um operador de conversão implícita de int para a Unidade, assim:
public struct Unit
{ // the conversion operator...
public static implicit operator Unit(int value)
{
return new Unit(value);
}
// the boring stuff...
private readonly int value;
public int Value { get { return value; } }
public Unit(int value) { this.value = value; }
}
Outras dicas
Você precisa fornecer um operador de conversão para a classe que leva um Int32.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow