Last active
May 2, 2020 06:09
-
-
Save ThiagoBarradas/3cac6c3cea1beaa6a6a1bd0c2e973119 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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