Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
706
Assunto : VB.NET
Titulo: Utilizando Enums como flags

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Os enums sempre foram muito úteis para auxiliar a escrita do código e criação de componentes. Agora em .NET podemos utilizar variáveis Enum na forma de flags.

Variáveis utilizadas na forma de flags permitem a inserção de vários valores combinados que irão funcionar como um flag ligado/desligado.

Por exemplo, as opções de configuração de um msgbox nesta instrução são flags, que podem ser somados para definir a configuração final.

O .NET possui um atributo chamado flags que transforma um Enum em um conjunto de flags. Veja como funciona :

<Flags()> Public Enum teste
x = 1
y = 2
z = 4
w = 8
End Enum

Observe que os valores na criação deste Enum não são sequenciais. Cada valor é igual a soma dos anteriores + 1

Este Enum poderá conter inúmeras combinações. Vamos então testar todas as combinações possíveis. Observe que todas as combinações possíveis só serão obtidas se a regra acima (numeração dos elementos) tiver sido obedecida.

Dim i As Integer
Dim t As teste
For i = 1 To 15
t = i
MsgBox(t.ToString)
Next

O laço vai do valor do primeiro elemento até o valor do último elemento * 2 - 1 .

A atribuição de valores no enum pode ser uma soma simples. Veja como fica :

Dim t As teste
t = teste.w Or teste.x Or teste.y
t = teste.w + teste.x + teste.y
MsgBox(t.ToString)

Observe que fiz a mesma atribuição de duas formas diferentes, apenas por demonstração. Existe apenas uma diferença entre as duas formas : Quando digitamos OR o menu do intelissence é aberto, quando digitamo + isso não ocorre. Um detalhe interessante é que isso ocorre em qualquer flag, inclusive os do msgBox.

Por fim vamos ver como testar se um determinado valor da variável contém um determinado elemento único do Enum. Vamos colocar uma textbox em um formulário e utilizar o seguinte código :

Dim t As teste
t = TextBox1.Text
If t And 2 Then
MsgBox("O valor contém y")
Else
MsgBox("O valor não contém y")
End If

Observe que quando utilizando AND ou OR, como nos dois exemplos, estamos utilizando operações bit a bit (bitwise operations).




Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 10/14/2016 7:13:00 PM
nome: EdptlSwSEEgbZV
email: jimos4581rzt@hotmail.com
comentário:
Ses3V7 http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 10/14/2016 6:38:00 PM
nome: MVkiPokDxVyb
email: jimos4581rzt@hotmail.com
comentário:
kHOkeZ http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/9/2016 4:41:00 PM
nome: IbQjAuqIpJyQZ
email: jimos4581rt@hotmail.com
comentário:
sXkx69 http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/8/2016 7:47:00 AM
nome: YuisecEMhsEUXGLPra
email: jimos4581rt@hotmail.com
comentário:
yDxECr http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br