2009-03-13 49 views
5

Me gustaría confirmar que se creó la matriz, ¿cómo se puede hacer? No hay una palabra clave nul?Falta VB.NET isNull()?

Dim items As Array = str.Split("|") 
if (items=null) then ??? 
+3

La declaración de Split creará un Expandido hay necesidad de comprobar. Solo puede usar la propiedad .Length para asegurarse de que haya elementos en ella. –

Respuesta

24

Para comprobar si un objeto es nulo en VB.Net, debe utilizar la palabra clave Nothing. p.ej.

If (items is Nothing) Then 
    'do stuff 
End If 

Sin embargo string.split() nunca se vuelve nula, por lo que debe comprobar la cadena de entrada para nulo en lugar de la matriz artículos. El código podría ser cambiado a algo como:

If Not String.IsNullOrEmpty(str) Then 
    Dim items As Array = str.Split("|") 
    'do stuff 
End If 
+0

Si la variable de cadena está vacía y realiza una división en ella, la matriz aún contendrá 1 elemento, por lo tanto, los elementos siempre no serán nada. – KevB

+0

mdresser: En realidad, ha respondido la pregunta tal como se le preguntó en el título "¿Falta VB.NET isNull()?", Pero la respuesta no tiene sentido en términos de la muestra de código proporcionada. Si yo fuera tú, editaría la respuesta para establecer ese hecho. Espero que esto ayude. –

+0

@Binary Worrier: gracias por la sugerencia. Ajustaré mi respuesta muy pronto. –

7

Pruebe usar String.IsNullOrEmpty en su variable de cadena antes de dividirla. Si intenta dividir la variable con nada en la cadena, la matriz todavía tendrá un elemento (una cadena vacía), por lo tanto, sus comprobaciones IsNothing en la matriz devolverán falso.

2

Utilice "Is Nothing" para probar Null en VB.NET.

If items Is Nothing Then 

End If 
1

La palabra clave para nula en VB es Nothing.

Sin embargo, esto no es lo que desea utilizar en este caso. El método Split nunca devuelve una referencia nula. Siempre devuelve una matriz de cadenas que tiene al menos un elemento. Si la cadena que dividiste estaba vacía, obtienes una matriz que contiene una cadena con la longitud cero.

Así, para comprobar si se obtiene como resultado que puede hacer:

Dim items As String() = str.Split("|") 
If items.Length = 1 and items(0).Length = 0 Then ... 

Por supuesto es más fácil comprobar primero la entrada:

If str.Length = 0 Then ... 
3

String.split nunca puede devolver null. En el peor de los casos, puede devolver una matriz sin elementos.

+0

No, la matriz devuelta siempre tiene al menos un elemento. – Guffa

+0

@Guffa: no es cierto. Si usa StringSplitOptions.RemoveEmptyEntries puede recuperar una matriz vacía. –

0

Para un chiste hacer esto:

destinationVariable = if(myvar is nothing, "", myvar)