Foros del Web » Programación para mayores de 30 ;) » .NET »

Error "NullReferenceException" al usar array de objetos

Estas en el tema de Error "NullReferenceException" al usar array de objetos en el foro de .NET en Foros del Web. Hola a todos, es un poco embarazoso hacer un thread para lo que estoy seguro que tiene una respuesta tonta, pero no he conseguido una ...
  #1 (permalink)  
Antiguo 27/01/2010, 20:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 18 años, 11 meses
Puntos: 0
Error "NullReferenceException" al usar array de objetos

Hola a todos, es un poco embarazoso hacer un thread para lo que estoy seguro que tiene una respuesta tonta, pero no he conseguido una solucion a este problema.

Básicamente, necesito crear un array de objetos derivados de clases contenidas en partes de mi proyecto, pero obtengo un error "NullReferenceException (Referencia a objeto no establecida como instancia de un objeto)" como si no hubiera inicializado la clase en cuestion (cosa que creo estar haciendo bien). El error no ocurre si la variable no es un array.

Les dejo el codigo pertinente:

Front-end (ejecutable):

Código vb:
Ver original
  1. Private Sub m_Mod_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles m_Mod.Click
  2.     Dim Ped As New Loki.cl_PedidoCliente, Res as Integer
  3.     Res = Ped.Buscar()
  4. End Sub


Logica (Loki.dll):
Código vb:
Ver original
  1. Public Class cl_PedidoClienteItems
  2.   Inherits Atlas.cl_DocumentosItems
  3.   '<...>
  4. End Class
  5.  
  6. Public Class cl_PedidoCliente
  7.   Inherits Atlas.cl_Documentos
  8.  
  9.   Public Shadows Function Buscar() As Integer
  10.     Dim arrayPed() As cl_PedidoClienteItems = New cl_PedidoClienteItems() {}
  11.     ReDim arrayPed(0)
  12.     'La siguiente linea genera el error de NullReferenceException
  13.    arrayPed(0).Cod_Item = "lo que sea"
  14.   End Function
  15. End Class

Core & DataAccess (Atlas.dll):
Código vb:
Ver original
  1. Friend Interface i_Documentos  
  2.   Function Buscar() As Integer
  3. End Interface
  4. Friend Interface i_DocumentosItems
  5.   Property Cod_Item() As String
  6. End Interface
  7.  
  8. Public MustInherit Class cl_Documentos
  9.   Implements Atlas.i_Documentos
  10.  
  11.   Public Overridable Function Buscar() As Integer Implements i_Documentos.Buscar
  12.   End Function
  13. End Class
  14.  
  15. Public MustInherit Class cl_DocumentosItems
  16.   Implements Atlas.i_DocumentosItems
  17.   Private _coditem As String
  18.  
  19.   Public Property Cod_Item() As String Implements i_DocumentosItems.Cod_Item
  20.     Get
  21.       Return _coditem
  22.     End Get
  23.     Set(ByVal Value As String)
  24.       _coditem = Value
  25.     End Set
  26.   End Property
  27.  
  28.   Public Sub New()
  29.     _coditem = ""     'Aqui deberia incializarse la propiedad.......
  30.  End Sub
  31. End Class

Apreciaria cualquier ayuda al respecto, ya busque en los temas pasados de este error pero no creo que aplican a mi situacion... Gracias por su tiempo y saludos!
  #2 (permalink)  
Antiguo 28/01/2010, 05:46
Avatar de Valery-Net  
Fecha de Ingreso: agosto-2008
Mensajes: 694
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Error "NullReferenceException" al usar array de objetos

El error te lo da en la línea???

Código vb:
Ver original
  1. Dim Ped As New Loki.cl_PedidoCliente, Res as Integer
  #3 (permalink)  
Antiguo 28/01/2010, 17:44
 
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Error "NullReferenceException" al usar array de objetos

El problema es que tú supones que tu array tiene elementos.

Dim arrayPed() As cl_PedidoClienteItems = New cl_PedidoClienteItems() {}

Hasta aquí, el array queda definido pero sin tamaño.

ReDim arrayPed(0)

Aquí, redimensionas el array con una posición. Pero esta posición no está ocupada por ninguna referencia a objeto, está vacía.

'La siguiente linea genera el error de NullReferenceException
arrayPed(0).Cod_Item = "lo que sea"

Da error porque el elemento 0 de tu array está vacío.

Deberías crear una instancia de cl_PedidoClienteItems y asignarla al array.

Ejemplo:

dim x as new cl_PedidoClienteItems ()
arrayPed(0) = x;

arrayPed(0).Cod_Item = "lo que sea"

Esta última línea no daría error porque la posición 0 de tu array está ocupada por una referencia a un objeto.

Saludos.
  #4 (permalink)  
Antiguo 28/01/2010, 22:12
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Error "NullReferenceException" al usar array de objetos

Cita:
Iniciado por Valery-Net Ver Mensaje
El error te lo da en la línea???

Código vb:
Ver original
  1. Dim Ped As New Loki.cl_PedidoCliente, Res as Integer
No, el error ocurria donde hipotecado2 lo menciona.

Cita:
Iniciado por hipotecado2
ReDim arrayPed(0)

Aquí, redimensionas el array con una posición. Pero esta posición no está ocupada por ninguna referencia a objeto, está vacía.
Tienes toda la razon, sabia que seria algo tonto al final :/

Muchas gracias por la ayuda... o/

Etiquetas: objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:53.