Pregunta VB Comprobar si int está vacío


Una pregunta realmente aburrida, lo siento, pero realmente todavía no lo sé;) He intentado siempre string.empty, pero con un decimal esto produce un error.

¿Hay alguna función? Lamentablemente, para las preguntas más simples, no hay respuestas en google


8
2017-11-22 12:00


origen


Respuestas:


Su título (y etiqueta) pregunta acerca de un "int", pero su pregunta dice que está obteniendo un error con un "decimal". De cualquier manera, no existe tal cosa como "vacío" cuando se trata de un tipo de valor (como un Integer, Decimal, etc.) No se pueden configurar para Nothing como podrías con un tipo de referencia (como un String o clase). En lugar, los tipos de valor tienen un constructor predeterminado implícito que inicializa automáticamente sus variables de ese tipo a su valor predeterminado. Para valores numéricos como Integer y Decimal, esto es 0. Para otros tipos, ver Esta mesa.

Entonces puede verificar si un tipo de valor se ha inicializado con el siguiente código:

Dim myFavoriteNumber as Integer = 24
If myFavoriteNumber = 0 Then
    ''#This code will obviously never run, because the value was set to 24
End If

Dim mySecondFavoriteNumber as Integer
If mySecondFavoriteNumber = 0 Then
    MessageBox.Show("You haven't specified a second favorite number!")
End If

Tenga en cuenta que mySecondFavoriteNumber se inicializa automáticamente a 0 (el valor predeterminado para Integer) detrás de las escenas por el compilador, por lo que el If declaración es True. De hecho, la declaración de mySecondFavoriteNumber arriba es equivalente a la siguiente declaración:

Dim mySecondFavoriteNumber as Integer = 0


Por supuesto, como probablemente haya notado, no hay manera de saber si el número favorito de una persona es actualmente 0, o si simplemente no han especificado un número favorito todavía. Si realmente necesita un tipo de valor que se pueda configurar para Nothing, podrías usar Nullable(Of T), declarando la variable en cambio como:

Dim mySecondFavoriteNumber as Nullable(Of Integer)

Y revisando para ver si ha sido asignado de la siguiente manera:

If mySecondFavoriteNumber.HasValue Then
    ''#A value has been specified, so display it in a message box
    MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value)
Else
    ''#No value has been specified, so the Value property is empty
    MessageBox.Show("You haven't specified a second favorite number!")
End If

18
2017-11-22 12:13



Quizás lo que estás buscando es Nullable

    Dim foo As Nullable(Of Integer) = 1
    Dim bar As Nullable(Of Decimal) = 2

    If foo = 1 Then
        If bar = 2 Then
            foo = Nothing
            bar = Nothing
            If foo Is Nothing AndAlso bar Is Nothing Then Stop
        End If
    End If

3
2017-11-22 13:30



Bueno, el valor predeterminado para un número sería 0, pero también puedes probar esto:

int x = 123;
String s = "" + x; 

y luego verifique la longitud o si la cadena 's' está vacía.


0
2017-11-22 12:12