.NET Framework Developer Center >
Fóruns do .NET Development
>
.NET Development - Geral
>
Capturando enumerador parcial
Capturando enumerador parcial
- Boa tarde,
possuo um enum que contém dados como:
SuperiorDireito = 1,
SuperiorEsquerdo = 2,
InferiorDireito = 4,
InferiorEsquerdo = 8,
Direito = 5,
Esquerdo = 10,
Todos = 15
Deu pra entender? O Direito é a soma do superior com o inferior direito, e todos é a soma de todos.
Como faço isso funcionar da forma correta e conseguir capturar isso em um if?
Queria pegar, If SuperiorDireito then
mesmo que o escolhido seja DIREITO teria que pegar também.
Aguardo algum tipo de ajuda
att
Leandro
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)
Respostas
- Olá Leandro,
Apenas para complementar, seria uma boa prática aplicar o atributo Flags do .NET Framework nessa sua Enum, para que você possa visualizar todos os valores que estão atribuídos a uma variável, quando estiver fazendo o debug da aplicação.
[Flags] public enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2 // ... }
Durante o debug:
Outro detalhe importante, é que você pode utilizar os próprios membros da Enum para definir as suas combinações, deixando para o compilador fazer os cálculos... Facilita bastante na manutenção quando você decidir incluir novos valores e/ou modificar valores existentes, e também fica muito mais claro na leitura do código, quais são as combinações possíveis:
[Flags] public enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2, BottomLeft = 4, BottomRight = 8, Left = TopLeft | BottomLeft, Right = TopRight | BottomRight, TopLeft_BottomRight = TopLeft | BottomRight, TopRight_BottomLeft = TopRight | BottomLeft, All = TopLeft | TopRight | BottomLeft | BottomRight }
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Marcado como RespostaLeandrodeMelloFagundes quarta-feira, 4 de novembro de 2009 12:05
- Pessoal,
obrigado pelas respostas mas o que eu procurava era um jeito de não precisar converter em inteiro. Segue um exemplo:
e na verificação, basta fazer assimpublic enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2, BottomLeft = 4, BottomRight = 8, Left = 5, Right = 10, TopLeft_BottomRight = 9, TopRight_BottomLeft = 6, All = 15 }
No Exemplo acima, se for TopLeft, Left, TopLeft_BottomRight ou All ele considera como left (pois contém o valor 1)if (RoundedBoxCorners.TopLeft == (m_roundedcorners & RoundedBoxCorners.TopLeft)) {<br/> //código aqui<br/> }
Obrigado a todos de qualquer forma.
Abraços
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Marcado como RespostaLeandrodeMelloFagundes terça-feira, 3 de novembro de 2009 17:43
Todas as Respostas
- Vc pode usar converts nessa manera abaixo
Esse drawType é uma enum
DrawType drawType = (DrawType)Enum.Parse(typeof(DrawType), context.Request["DrawType"]); - Converte para inteiro e faz o tratamento
exemplo:
Class Program Private Shared Sub Main(ByVal args As String()) Dim a As Cordenadas = Cordenadas.Direito Dim b As Cordenadas = Cordenadas.InferiorDireito Dim c As Cordenadas = Cordenadas.SuperiorDireito Dim d As Cordenadas = Cordenadas.Esquerdo Dim e As Cordenadas = Cordenadas.SuperiorEsquerdo If CInt(a) = (CInt(b) + CInt(c)) Then Console.WriteLine("b +c = a") End If End Sub End Class Public Enum Cordenadas SuperiorDireito = 1 SuperiorEsquerdo = 2 InferiorDireito = 4 InferiorEsquerdo = 8 Direito = 5 Esquerdo = 10 Todos = 15 End Enum
- Pessoal,
obrigado pelas respostas mas o que eu procurava era um jeito de não precisar converter em inteiro. Segue um exemplo:
e na verificação, basta fazer assimpublic enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2, BottomLeft = 4, BottomRight = 8, Left = 5, Right = 10, TopLeft_BottomRight = 9, TopRight_BottomLeft = 6, All = 15 }
No Exemplo acima, se for TopLeft, Left, TopLeft_BottomRight ou All ele considera como left (pois contém o valor 1)if (RoundedBoxCorners.TopLeft == (m_roundedcorners & RoundedBoxCorners.TopLeft)) {<br/> //código aqui<br/> }
Obrigado a todos de qualquer forma.
Abraços
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)- Marcado como RespostaLeandrodeMelloFagundes terça-feira, 3 de novembro de 2009 17:43
- Olá Leandro,
Apenas para complementar, seria uma boa prática aplicar o atributo Flags do .NET Framework nessa sua Enum, para que você possa visualizar todos os valores que estão atribuídos a uma variável, quando estiver fazendo o debug da aplicação.
[Flags] public enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2 // ... }
Durante o debug:
Outro detalhe importante, é que você pode utilizar os próprios membros da Enum para definir as suas combinações, deixando para o compilador fazer os cálculos... Facilita bastante na manutenção quando você decidir incluir novos valores e/ou modificar valores existentes, e também fica muito mais claro na leitura do código, quais são as combinações possíveis:
[Flags] public enum RoundedBoxCorners { None = 0, TopLeft = 1, TopRight = 2, BottomLeft = 4, BottomRight = 8, Left = TopLeft | BottomLeft, Right = TopRight | BottomRight, TopLeft_BottomRight = TopLeft | BottomRight, TopRight_BottomLeft = TopRight | BottomLeft, All = TopLeft | TopRight | BottomLeft | BottomRight }
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://www.caioproiete.com- Marcado como RespostaLeandrodeMelloFagundes quarta-feira, 4 de novembro de 2009 12:05
- Como sempre uma aula Caio!
Vou alterar sim, tenha certeza disso!
:)
Muito obrigado
Abraços
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand" (Martin Fowler)


