Skip to content

Instantly share code, notes, and snippets.

@ThiagoBarradas
Last active May 2, 2020 06:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThiagoBarradas/3cac6c3cea1beaa6a6a1bd0c2e973119 to your computer and use it in GitHub Desktop.
Save ThiagoBarradas/3cac6c3cea1beaa6a6a1bd0c2e973119 to your computer and use it in GitHub Desktop.
// exemplo com flags
[Flags]
public enum Operation
{
None = 0, // usado quando nenhum valor for atribuido
Read = 1,
Write = 2
}
// para informar que uma operação pode ser de leitura, escrita ou ambos
var read = Operation.Read;
var write = Operation.Write;
var readWrite = Operation.Read | Operation.Write;
// atualizando uma variável "desconhecida" para adicionar uma permissão de escrita
// se não existir, adicionará a operação de Write
// se já existir, tudo bem
operation |= Operation.Write;
// atualizando uma variável "desconhecida" para remover uma permissão de escrita
// para isso foi usando os operadores binários and (&) e not(~)
// se existir, removerá a operação de Write
// se não existir, tudo bem
operation &= ~Operation.Write;
// para validar se o uma operação de escrita ou leitura pode acontecer
if (operation.HasFlag(Operation.Read))
{
// faz a leitura
}
if (operation.HasFlag(Operation.Write))
{
// faz a escrita
}
//////////////////////////////////////////////////
// exemplo sem flags
public enum Operation
{
None,
Read,
Write,
ReadWrite
}
// para informar que uma operação pode ser de leitura, escrita ou ambos
var read = Operation.Read;
var write = Operation.Write;
var readWrite = Operation.ReadWrite;
// atualizando uma variável "desconhecida" para adicionar uma permissão de escrita
if (operation == Operation.None)
{
operation = Operation.Write;
}
else if (operation == Operation.Read)
{
operation = Operation.ReadWrite;
}
// atualizando uma variável "desconhecida" para remover uma permissão de escrita
if (operation == Operation.Write)
{
operation = Operation.None;
}
else if (operation == Operation.ReadWrite)
{
operation = Operation.Read;
}
// para validar se o uma operação de escrita ou leitura pode acontecer a partir de uma variável com o enumerador acima
if (operation == Operation.Read || operation == Operation.ReadWrite)
{
// faz a leitura
}
if (operation == Operation.Write || operation == Operation.ReadWrite)
{
// faz a escrita
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment