First question:
A | ; , . ( enums , ). , .
:
[Flags]
enum FileAccess{
None = 0,
Read = 1,
Write = 2,
Execute = 4,
ReadWrite = Read | Write
ReadExecute = Read | Execute
}
if((access & FileAccess.Read) == FileAccess.Read)
, , enum; , , Read. Read ReadWrite ( 0); Write ( ).
access & FileAccess.Read == FileAccess.Read
access & FileAccess.Read == FileAccess.Read
access & FileAccess.Read != FileAccess.Read
:
, "/", ", ". , || ( ). " , ", ^ ( ).
(true == 1, false == 0):
A B | A || B
------|-------
OR 0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 1 (result is true if any are true)
A B | A ^ B
------|-------
XOR 0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0 (if both are true, result is false)