Valores múltiplos nas declarações enum: um mergulho mais profundo no CLR
diferente de estruturas, as enumes são categorizadas como tipos de valor leves que representam um conjunto de constantes nomeados. No entanto, o que a pergunta apresenta é uma observação intrigante de que as enumes podem aparentemente permitir que vários valores sejam atribuídos à mesma constante. Nos bastidores, as enums derivam da classe Base System.enum e são essencialmente estruturas com valores constantes predefinidos. { Vermelho = 1, Azul = 1, Verde = 1 }
clr interpreta internamente esta declaração da seguinte forma:
public struct cor: System.enum { public const int vermelho = 1; public const int azul = 1; public Const int Green = 1; }
public enum Color { Red = 1, Blue = 1, Green = 1 }
Ambas as cores1 e color2 serão definidas para o valor vermelho porque a atribuição de primeiro valor é arbitrária. Tecnicamente, nem o Color1 nem o Color2 são atribuídos em vermelho; Em vez disso, eles mantêm o valor 1. Mas, quando exibido, o vermelho é o que você verá. bool b = color.red == color.green;
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3