"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As enumes em C# podem manter vários valores com a mesma constante subjacente e quais são as implicações?

As enumes em C# podem manter vários valores com a mesma constante subjacente e quais são as implicações?

Postado em 2025-03-24
Navegar:922

Can Enums in C# Hold Multiple Values with the Same Underlying Constant, and What are the Implications?

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;
}
Tutorial mais recente Mais>

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