Pergunta

Existe uma maneira de combinar as Enumerações em VB.net?

Foi útil?

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 Enums é 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 Enums 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top