visual relacionales operadores operador negacion lógicos logicos logico logicas lenguaje condiciones booleanos and vb.net

vb.net - relacionales - operadores lógicos y bit a bit en visual basic



No palabra clave vs=False cuando se verifica la condición booleana falsa (9)

Algo más: Omita los paréntesis, son redundantes en VB y, como tales, constituyen basura sintáctica.

Además, estoy un poco molesto por la cantidad de gente que discute dando ejemplos técnicos en otros idiomas que simplemente no se aplican en VB. En VB, las únicas razones para usar If Not x lugar de If x = False son legibilidad y lógica. No es que necesites otras razones.

Completamente diferentes razones se aplican en C (++), verdadero. Aún más cierto debido a la existencia de marcos que realmente manejan esto de manera diferente. ¡Pero engañoso en el contexto de VB!

Cuando estoy usando una declaración If y quiero verificar si un valor booleano es falso, debo usar la palabra clave "No" o simplemente = falso, como tal

If (Not myboolean) then

vs

If (myboolean = False) then

¿Cuál es una mejor práctica y más legible?


! condición

En C y pre-STL C ++, "condición!" Significa condición evalúa a un valor de verdad falso, mientras que "condición == FALSO" significaba que el valor de la condición tenía que ser igual a lo que el sistema diseñó como FALSO. Dado que diferentes implementaciones lo definieron de diferentes maneras, se consideró una mejor práctica usar la condición!

ACTUALIZACIÓN: Como se señala en el comentario - FALSO siempre es 0, es VERDADERO que puede ser peligroso.


Como no existe una diferencia funcional entre ninguno de los estilos, esta es una de esas cosas que solo se reduce a las preferencias personales.

Si está trabajando en una base de código donde ya se ha establecido un estándar, apéguese a eso.


Definitivamente use "No", considere leerlo en voz alta.

Si lees en voz alta:

Si X es falso, entonces, hazlo tú.

Versus

Si no es X, entonces haga Y

Creo que encontrarás que la ruta "No" es más natural. Especialmente si elige buenos nombres de variables o funciones.

Code Complete tiene algunas buenas reglas sobre nombres de variables. http://cc2e.com/Page.aspx?hid=225 (probablemente se requiera iniciar sesión)


Definitivamente, use "No". Y para la alternativa, use "If (myboolean)" en lugar de "If (myboolean = true)"

El mejor funciona si le das a boolean un nombre legible:

if (node.HasChildren)


Use True y False para establecer variables, no para probarlas. Esto mejora la legibilidad como se describe en las otras respuestas, pero también mejora la portabilidad, particularmente cuando no se siguen las mejores prácticas.

Algunos idiomas le permiten intercambiar bool y tipos enteros. Considere el ejemplo artificial:

int differentInts(int i, int j) { return i-j; // Returns non-zero (true) if ints are different. } . . . if (differentInts(4, 8) == TRUE) printf("Four and Eight are different!/n"); else printf("Four and Eight are equal!/n");

Estilo horrible, pero he visto peor colarse en la producción. En los relojes de otras personas, por supuesto. :-)


Además del consenso, cuando hay un caso verdadero y uno falso, por favor use

if (condition) // true case else // false case

más bien que

if (not condition) // false case else // true case

(Pero nunca estoy seguro de si la x is not None de python x is not None es x is not None es el caso verdadero o falso).


Hizo la diferencia con estas líneas en vb 2010/12 Con la línea superior, Option Strict tuvo que estar desactivado.

If InStr(strLine, "=") = False Then _ If Not CBool(InStr(strLine, "=")) Then

Gracias por responderme la pregunta. (Estoy aprendiendo)


No hace ninguna diferencia siempre que estés lidiando con VB solamente, sin embargo, si usas funciones C como la API de Win32, definitivamente no uses "NO" simplemente "== False" cuando realices una prueba de falsa, pero cuando pruebas para true no use "== True" en su lugar use "if (function ())".

La razón para eso es la diferencia entre C y VB en cómo se define boolean.

  1. En C verdadero == 1 mientras que en VB verdadero == -1 (por lo tanto, no debe comparar el resultado de una función C con verdadero, ya que está intentando comparar -1 a 1)

  2. No en Vb es un NOT bit a bit (igual al operador C de ~ no el operador!), Y por lo tanto niega cada bit, y como resultado negar 1 (verdadero en C) dará como resultado un valor no cero que es verdadero, NO solo funciona en VB verdadero que es -1 (que en formato de bit es todo uno de acuerdo con la regla de complemento de dos [111111111]) y la anulación de todos los bits [0000000000] es igual a cero.

Para una mejor comprensión, vea mi respuesta sobre ¿Existe un equivalente de VB.net para C # ''s? ¿operador?