visual strings operator operadores not net equal entre diferencia comparar comparacion cadenas vb.net

vb.net - strings - operadores de comparacion en visual basic



¿Hay un equivalente de VB.net para C#''s? ¿operador? (6)

Después de dos años de C #, ahora estoy de vuelta a VB.net debido a mi trabajo actual. En C #, puedo hacer una prueba breve de valor nulo o falso en una variable de cadena como esta:

if(!String.IsNullOrEmpty(blah)) { ...code goes here }

Sin embargo, estoy un poco confundido acerca de cómo hacer esto en VB.net.

if Not String.IsNullOrEmpty(blah) then ...code goes here end if

¿Significa la declaración anterior si la cadena no es nula o está vacía? ¡Es la palabra clave Not funciona como la de C # ! ¿operador?


En el contexto que muestra, ¡la palabra clave VB Not es de hecho el equivalente de C # ! operador. Pero tenga en cuenta que la palabra clave VB Not está realmente sobrecargada para representar 2 equivalentes C #:

  • negación lógica:!
  • complemento bit a bit: ~

Por ejemplo, las siguientes 2 líneas son equivalentes:

C#: useThis &= ~doNotUse; VB: useThis = useThis And (Not doNotUse)


Sí, son lo mismo


Secundado. Ellos trabajan de manera idéntica. Ambos revierten el significado lógico de la expresión que sigue al operador! / Not.


Not es exactamente así ! (en el contexto de Boolean . Consulte la observación de RoadWarrior para su semántica como complemento de la aritmética de bits). Hay un caso especial en combinación con el operador Is para probar la igualdad de referencia:

If Not x Is Nothing Then '' … '' '' is the same as '' If x IsNot Nothing Then '' … ''

es equivalente a C # ''s

if (x != null) // or, rather, to be precise: if (object.ReferenceEquals(x, null))

Aquí, se prefiere el uso de IsNot . Lamentablemente, no funciona para TypeOf pruebas TypeOf .


c #: boolean example1 = false;

boolean example2 = !example1;

vb.net: dim example1 como boolean = False

dim example2 as boolean = Not example1


Funcionan de manera idéntica hasta que haga referencia al código C o C ++.

Por ejemplo, hacer NO en el resultado de una función de API de Win32, podría conducir a un resultado incorrecto, ya que verdadero en C == 1, y un NOT de bit a 1 no es igual a falso.

As 1 is 00000000001 Bitwise Not 11111111110 While false is 00000000000

Sin embargo, en VB funciona bien, como en VB true == -1

As -1 is 11111111111 Bitwise Not 00000000000