Hay alguna diferencia entre vbNullString y “”?

En VBA, va a hacer ninguna diferencia si se compara una cadena, o similares, en contra de vbNullString en lugar de en contra de una cadena vacía; ""? Si es así ¿qué diferencias hay entre los dos?

OriginalEl autor eirikdaude | 2015-09-07

2 respuestas

  1. 13

    vbNullString y "" son diferentes. Aquí está una página web exerpt que describe el uso de la memoria de las diferencias.


    “Esta es la forma usual para borrar una variable de cadena.

    Text$ = ""

    Qué desperdicio! Primero de todo, la cadena de "" tarda de 6 bytes de la RAM cada vez que la utilice. Considere la alternativa:

    Text$ = vbNullString

    Entonces, ¿qué es esto? vbNullString es un especial de VB constante que denota una cadena nula. El "" literal es una cadena vacía. Hay una diferencia importante. Una cadena vacía es una cuerda real. Una cadena nula no lo es. Es sólo un cero. Si conoces el lenguaje C, vbNullString es el equivalente a NULL.

    Para la mayoría de propósitos, vbNullString es equivalente a "" en VB. La única diferencia práctica es que vbNullString es más rápido para asignar y proceso y requiere menos memoria.

    Si usted llamar a algunos no-VB API o componente, prueba de la llama con vbNullString antes de distribuir la aplicación. La función que está llamando no podría comprobar una cadena NULA, en cuyo caso es posible que se bloquee. No funciones de VB debe comprobar el valor NULL antes de procesar un parámetro de cadena. Con la mala suerte, la función particular que usted está llamando a no hacer eso. En este caso, el uso de "". Generalmente Api de apoyo a los vbNullString e incluso se puede realizar mejor con ella!”


    El resto del artículo tiene más información sobre la optimización de cadenas que pueden ser interesantes también.

    Completo página web: http://www.aivosto.com/vbtips/stringopt.html

    OriginalEl autor GoeschWho

  2. 6

    Esta comparación los estados que la asignación de "" a una variable se utiliza 6 bytes de memoria, mientras que el uso de vbNullString no utilizar cualquier memoria.

    Personalmente, prefiero evaluar la longitud de una cadena. Si la longitud es 0, entonces podemos llegar a la conclusión de que la cadena es una vbNullString o "". Este método es aceptado como el método más rápido de la comprobación de una vbNullString.

    If Len(string) = 0 Then

    Puede leer un Len vs vbNullString vs "" comparación aquí.

    Se ve bien, a menos que alguien campanadas con más información, te marca esto como la solución. Sin embargo, el último artículo que enlaza a indica que hay una diferencia, aunque el autor no sabe lo que es. Evidentemente, podría ser algo tan simple como la memoria que ocupa cuando está asignado a una variable, como lo indican anteriormente en su respuesta.
    Hay una diferencia, "" es una cadena de longitud cero, vbNullString es un puntero nulo de tipo String (no apunta a una cadena). Para el propósito de la comparación de VB oculta la diferencia, pero a veces quieres mostrar.
    El 2º enlace está muerto: aquí es un archivo

    OriginalEl autor luke_t

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *