c# - todas - ¿Qué significa |=(un solo tubo igual) y &=(un solo y único igual) significa
whatsapp 1 tilde (3)
Quiero eliminar el atributo del sistema con los demás ...
Puedes hacer esto así:
Folder.Attributes ^= FileAttributes.System;
En líneas abajo:
//Folder.Attributes = FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= ~FileAttributes.System;
Folder.Attributes &= ~FileAttributes.System;
¿Qué significa |=
(un solo tubo igual) y &=
(un solo &=
único igual) significan en C #
Quiero eliminar el atributo del sistema para mantener a los demás ...
Son operadores de asignación compuesta , traduciendo (muy libremente)
x |= y;
dentro
x = x | y;
y lo mismo para &
. Hay un poco más de detalle en algunos casos con respecto a un elenco implícito, y la variable objetivo solo se evalúa una vez, pero eso es básicamente lo esencial.
En términos de operadores no compuestos, &
es un "AND" bit a bit |
es un bit a bit "O" .
EDITAR: En este caso, quiere Folder.Attributes &= ~FileAttributes.System
. Para entender por qué:
-
~FileAttributes.System
significa "todos los atributos exceptoSystem
" (~
es un bitwise-NOT) -
&
significa "el resultado son todos los atributos que ocurren en ambos lados del operando"
Por lo tanto, básicamente actúa como una máscara; solo conserva los atributos que aparecen en ("todo excepto el sistema"). En general:
-
|=
solo agregará bits al objetivo -
&=
solo eliminará bits del objetivo
a |= b
es equivalente a a = a | b
a = a | b
excepto que a
se evalúa solo una vez
a &= b
es equivalente a a = a & b
excepto que a
se evalúa solo una vez
Para eliminar el bit del sistema sin cambiar otros bits, use
Folder.Attributes &= ~FileAttributes.System;
~
es una negación a nivel de bit. Así establecerá todos los bits a 1, excepto el bit del sistema. and
-ing it con la máscara establecerá System en 0 y dejará intactos todos los demás bits porque 0 & x = 0
y 1 & x = x
para cualquier x