none
Mensaje de error al cargar una Lista RRS feed

  • Pregunta

  • Buenos dias amigos, de ante mano gracias por su ayuda, mi caso es el siguiente:

    Tengo la siguiente clase llamada DatosAdicionales con dos elementos:

    Public Class DatosAdicionales
        Private _llave As String
        Private _valor As String
        Public Sub New()
            _llave = String.Empty
            _valor = String.Empty
        End Sub
        Public Property Llave As String
            Get
                Return _llave
            End Get
            Set(value As String)
                _llave = value
            End Set
        End Property
    
        Public Property Valor As String
            Get
                Return _valor
            End Get
            Set(value As String)
                _valor = value
            End Set
        End Property
    End Class

    y tengo un formulario aspx (forma1.aspx) con el que pretendo alimentar la clase DatosAdicionales desde una lista:

    Public Class forma1
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            Dim dts As New DatosAdicionales()
            dts.Llave = "tantra"
            dts.Valor = "mantra"
            Dim valor2 As List(Of DatosAdicionales)
            valor2.Add(dts)
            Dim itm As String = valor2.FirstOrDefault(Function(f) f.Valor).ToString()
            Dim itm2 As String = valor2.FirstOrDefault(Function(f) f.Llave).ToString()
            lbl1.Text = "Valor: " + itm + "Llave: " + itm2
    
        End Sub
    
    End Class

    pero cuando coy a llenar la lista (valor2.Add(dts)), me arroja el siguiente mensaje:

    "Variable 'valor2' is used before it has been asigned a value..."

    Lo cual me parece extraño porque no lo he usado en ninguna parte adicional.

    Nuevamente mil gracias.

    jueves, 13 de febrero de 2020 15:44

Todas las respuestas

  • El error está en estas dos líneas:

           Dim valor2 As List(Of DatosAdicionales)
           valor2
    .Add(dts)

    Fíjate que declaras valor 2 pero no lo inicializas. Por lo tanto, vale Nothing y es ilegal llamar a su método Add. El compilador es lo bastante listo como para detectarlo en tiempo de compilación (ya que daría un NullReferenceException en tiempo de ejecución) y te presenta el correspondiente mensaje de error.

    Remedio sencillo para que no dé error de compilación: añade un New:

    Dim valor2 As New List(Of DatosAdicionales)

    Pero aunque con eso ya no dará error, el código es bastante inútil porque luego no usas esa lista para nada.

    jueves, 13 de febrero de 2020 15:51
  • Gracias por su respuesta.

    Cabe aclarar que este codigo es para hacer pruebas, por lo que no se espera que haga una funcion especifica, sin embargo, la parte siguiente de este codigo es guardar los valores de cada item de la lista que acabo de alimentar en variables independientes, agradezco me ayuden con esta parte.

    jueves, 13 de febrero de 2020 16:06