tantas respuestas ... Sólo quiero romper hacia abajo un poco más:
p.Enabled = p.Enabled != true;
es semánticamente equivalente a:
var IN = p.Enabled;
var OUT = IN != true;
p.Enabled = OUT;
Por lo tanto:
p.Enabled -> IN IN != true OUT -> p.Enabled
--------------- ------------- ----------------
true true != true false
false false != true true
(if nullable) null null != true true
Así, desde el Truth Table, se puede ver que es lo mismo * como el logical not (!
) operator y se puede reescribir como:
p.Enabled = !p.Enabled;
(me imagino que la mayoría [experiencia] los programadores prefieren esta última forma, ya que es una expresión bastante común.)
Happy coding.
* Tenga en cuenta la adición de null
como el estado de entrada tercer en caso de bool?
(aka) Nullable<bool>
tipos. (Gracias, Thomas Mayfield ;-)
Ha pasado un tiempo desde que escribí C#, pero parece que es el equivalente de 'p.Enabled =! P.Enabled;'. – JasonFruit
p.Enabled = p.Enabled aquí es donde usted dice que p.Enabled tomará el valor de p.Enabled (que no tiene sentido). Entonces estás diciendo que no debería ser igual a tue; por lo tanto falso – Andrew
Guau, diez respuestas duplicadas a esta pregunta (incluidas las dos respuestas de "comentario" anteriores). Me parece que algunas personas deberían estar borrando sus respuestas. –