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.

Foi útil?

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
scroll top