Em C#, você pode realizar operações lógicas em objetos inteiros por bit. O significado de operação lógica por bit é que cada bit do objeto a ser operado é tomado por turno, e o resultado lógico de cada bit é cada bit do valor do resultado. Os operadores de lógica de bits suportados por C# são mostrados na figura a seguir:
Design básico de permissão:
<summary>
///權限列舉 </summary> [FlagsAttribute] publicenumPermissions
{ Descrição ("Não configurado")] Nenhum=0, [Descrição("Criar")] Criar=1, [Descrição("Lido")] Leitura=2, [Descrição("Atualização")] Atualização=4, [Descrição("Excluir")] Delete=8, [Descrição("Todas as Funcionalidades")] Todos=Criar| Read| Atualização| Excluir
}
Técnica 1: Use o valor de potência de 2 como valor de enumeração para futuras operações de bits (&AND, |OR, ^XOR).
Dica 2: Adicione uma nova ação de permissão à permissão existente. (Operação de OR)
Permissõespermissão=Permissões.Nenhuma; permissão=permissão| Permissões.Criar; MessageBox.Show(permissão. ToString()); Resultado: Criar
Dica 3: Adicione a tag [FlagsAttribute]
Permissõespermissão=Permissões.Nenhuma; permissão=permissão| Permissões.Criar; MessageBox.Show(permissão. ToString()); Resultado:Criar([FlagsAttribute] não afeta o resultado)
permissão=permissão| Permissões.Leia; MessageBox.Show(permissão. ToString()); Resultado: 3 ([FlagsAttribute] não adicionado) Resultado: Criar, Ler (adicionar [FlagsAttribute])
Dica 4: Remova uma certa ação de permissão da permissão existente. (Aplicações de computação XOR e AND)
Permissõespermissão=Permissões.Nenhuma; permissão=permissão| Permissões.Criar; MessageBox.Show(permissão. ToString()); Resultado: Criar
permissão=permissão| Permissões.Leia; permissão=permissão| Permissões.Atualização; MessageBox.Show(permissão. ToString()); Resultado: Criar, Ler, Atualizar
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permissão. ToString()); Resultado: Criar, Atualizar
Dica 5: Determine se você tem uma certa permissão na permissão atual (AND operação)
Permissõespermissão=Permissões.Nenhuma; permissão=permissão| Permissões.Criar; MessageBox.Show(permissão. ToString()); Resultado: Criar
permissão=permissão| Permissões.Leia; permissão=permissão| Permissões.Atualização; MessageBox.Show(permissão. ToString()); Resultado: Criar, Ler, Atualizar
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permissão. ToString()); Resultado: Criar, Atualizar
boolIsCreatable=false; if((permission&Permissions.Create)==Permissions.Create)
{ IsCriável=verdadeiro;
} senão
{ IsCriável=falso;
} ImageBox.Mostrar(ÉCriável.ParaString()); Resultado: Verdadeiro
|