Pergunta

haveria diferença de velocidade entre

if (myInt == CONST_STATE1)

e

if (myEnum == myENUM.State1)

em c #?

Foi útil?

Solução

em C # Enums estão em-alinhado para ser constantes pelo compilador de qualquer maneira, de modo que o benefício é código legibilidade

Outras dicas

A única coisa a ser cuidadoso sobre quando usar Enums é não usar qualquer uma das operações que exigem reflexão (ou usá-los com cuidado). Por exemplo:

  1. myEnumValue.ToString ().
  2. Enum.Parse ()
  3. Enum.IsDefined ()
  4. Enum.GetName ()
  5. Enum.GetNames ()

No caso de constantes a opção de fazer qualquer operação que exija reflexão não existe. No entanto, em caso de enums ele faz. Então você terá que ter cuidado com isso.

Eu vi relatórios de perfil, onde as operações relativas a validações enum / reflexões levaram até 5% do tempo da CPU (um cenário onde validações enum foram feitas em cada chamada para um método de API). Isso pode ser bastante reduzido, escrevendo uma classe que armazena em cache os resultados da reflexão dos tipos de enum a ser utilizado.

Dito isto, Eu recomendaria tomar a decisão de usar enumeração vs. constante com base no que faz sentido do ponto de vista do design . Isto é, enquanto certificando-se de que a equipe está ciente das implicações das operações que envolvem reflexão desempenho.

Além disso, eu não tenho certeza de que você precisa se preocupar com isso em tudo. Ele soa como otimização prematura. Tenho certeza de que em qualquer sistema, existem maiores gargalos do que comparações enum. :)

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