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.Systemsignifica "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