Pergunta
Existe uma maneira de combinar as Enumerações em VB.net?
Solução
Eu acredito que o que você quer é um sinalizador tipo enum.
Você precisa adicionar o atributo Flags para o topo do enum, e, em seguida, você pode combinar as enumerações com a 'Ou' palavra-chave.
Como esta:
<Flags()> _
Enum CombinationEnums As Integer
HasButton = 1
TitleBar = 2
ReadOnly = 4
ETC = 8
End Enum
Nota: Os números à direita são sempre o dobro do tamanho (potências de 2) - este é necessário para ser capaz de separar o indivíduo de sinalizadores que foram definidas.
Combinar o desejado bandeiras usando a chave Ou palavra-chave:
Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly
Isso define o Título e o acesso somente Leitura para o enum
Para verificar o que foi definido:
If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
Window.TitleBar = True
End If
Outras dicas
Você pode usar o FlagsAttribute para decorar um Enum assim que vai deixar você combinar o Enum:
<FlagsAttribute> _
Public Enumeration SecurityRights
None = 0
Read = 1
Write = 2
Execute = 4
E, em seguida, chamá-los assim (classe UserPriviltes):
Public Sub New ( _
options As SecurityRights _
)
New UserPrivileges(SecurityRights.Read OR SecurityRights.Execute)
Eles efetivamente se combinado (bit de matemática), de modo que o usuário acima tem de Ler E Executar todos os transportado em uma fantasia SecurityRights variável.
Para verificar se o usuário tem um privilégio de usar E (mais de bit a bit de matemática), para verificar o que os usuários enum valor, com o valor de Enumeração você está verificando:
//Check to see if user has Write rights
If (user.Privileges And SecurityRights.Write = SecurityRigths.Write) Then
//Do something clever...
Else
//Tell user he can't write.
End If
HTH, Tyler
Se eu entendi sua pergunta corretamente você deseja combinar diferentes tipos de enum.Assim, uma variável pode armazenar um valor a partir de uma de duas diferentes enum certo?Se você está perguntando sobre como armazenar a combinação de dois diferentes valores de um tipo enum você pode olhar para Dave Arkell, e a explicação do
As enumerações são apenas números inteiros com algum açúcar sintático.Então, se você certifique-se de que não há sobreposição, você pode combiná-los por fundição para int.
Ele não vai fazer muito para código embora.Eu tento evitar usar enums a maior parte do tempo.Normalmente, se você deixar enums raça em seu código, é só uma questão de tempo antes de dar à luz a repetidas instruções de caso e outros confuso antipatterns.
A chave para a combinação Enum
s é para se certificar de que o valor é uma potência de dois (1, 2, 4, 8, etc.) para que você possa realizar operações bit-los (|=
&=
).Aqueles Enum
s pode ser marcado com uma Flags
atributo.O Anchor
propriedade sobre os controles do Windows Forms é um exemplo de como um controle.Se ele é marcado como um sinalizador, o Visual Studio irá permitir que você verifique os valores em vez de selecionar uma única em uma lista drop-down nas propriedades designer.
Se você tomar sobre o uso do enum sinalizadores() há um bom artigo aqui.