Boletín mugperu Digital - Julio 2009!
  Search 
Monday, May 21, 2012 ..:: Foros de Discusión ::.. Register  Login
Foros MUGPERU Minimize
Subject: Array de instancias de clases
Prev Next
You are not authorized to post a reply.

Author Messages
direcfox
Posts:34

27/05/2005 01:39 PM  

hola amigos quiero hacer un array de clases, este es el codigo que estoy utilizando:

Dim m_library() As Class1

m_library(0) = New Class1("Cuento de Adas", "El cuento de los Osos y la Miel.")

m_library(1) = New Class1("Cocina", "Chocolate chip cookies are the most delicius cookies")

pero me sale el siguiente error : Object reference not set to an instance of an object ;

pero de esta forma no me sale ningun error:

Dim fairy_tales As Class1 = New Class1("Cuento de Adas", "Once upon a time there was a bear.")

Dim cookies As Class1 = New Class1("Cocina", "Chocolate chip cookies are the most delicius cookies")

Dim m_library() As Class1 = New Class1() {fairy_tales, cookies}

Y bueno yo necesito hacerlo de la primera forma ya que quiero hacer N instancias, haber si me pueden dar una mano

Saludos

 

Mauricio 

richie_crazy57
Posts:203

27/05/2005 02:53 PM  

Hola, Mauricio:

El mensaje de error de referencia nula se debe a que declaras el arreglo de objetos de tipo Class1, pero no lo dimensionas. Deberías declararlo de la siguiente manera:

Dim m_library(n) As Class1

Esa “n” será la longitud que se le asignará al arreglo (el número de elementos). En este caso “n” sería 1 dado que tienes 2 elementos y los índices empiezan en cero:

Dim m_library(1) As Class1

Sin embargo, esto sería así de simple si es que quisieras asignar siempre un número fijo de instancias. De lo contrario, si trabajas con arreglos de objetos y quieres asignar más objetos de los que pensaste al inicializarlos, tendrías que utilizar la palabra clave ReDim para que redimensione tu arreglo, y además la palabra clave Preserve para que se mantengan los elementos de tu arreglo.

Personalmente, prefiero utilizar la clase de colección ArrayList en vez de redimensionar arreglos. De esta manera no te preocupas al principio por la cantidad de elementos que tendrá tu estructura, simplemente vas agregando y eliminando elementos de la siguiente manera:

Dim m_library As New ArrayList

Dim thisBook As New Class1("Cuento de Adas", "El cuento de los Osos y la Miel."))

m_library.Add(thisBook)

Dim anotherBook As New Class1("Cocina", "Chocolate chip cookies are the most delicius cookies")

m_library.Add(anotherBook)

Esto se debe a que esta clase implementa, entre otras, a tres interfaces muy útiles para los tipos de colecciones: IList, cuya funcionalidad te permite agregar elementos, eliminar elementos, limpiar la colección, establecer si la colección contiene o no a un elemento determinado, ... ; ICollection, cuya funcionalidad te permite obtener el número de elementos de la colección, copiar los elementos de la colección a un arreglo, ... ; e IEnumerable, cuya funcionalidad te permite recorrer los elementos de la colección.

Quizás no te parezca muy familiar al principio, pero vas a ver con la práctica que es muy útil. Suerte.

Я!©ђ!Є ©Я∆ZΨ

rcrbalcazar
Posts:130

27/05/2005 05:35 PM  

Hola, efectivamente como dice richie_crazy57 seria mejor que utilices una coleccion para el caso que quieres. Solo para agregar: si aun quieres usar un array puedes utilizar la forma alternativa de crear arrays:

Dim m_library() As Class1

m_library = New Class1() { _

New Class1("Cuento de Adas", "El cuento de los Osos y la Miel."), _

New Class1("Cocina", "Chocolate chip cookies are the most delicius cookies")}

De esta manera inicializas tu arreglos con la cantidad de elementos que necesites. Pero si despues como parte de tu codigo requieres agregar mas elementos podrias utilizar un Redim pero para tal caso resulta mas eficiente utilizar las colecciones: ArrayList, HashTable, etc.


Richard Rodriguez
DeadMan
Posts:45

30/05/2005 11:54 AM  

y si usas el redim no te olvides del preserve:

dim m_library( ) as Class1

for i=0 to n

redim preserve m_library( i )

...

m_library( i ) = ...

...

next i

 


Q.E.P.D.
You are not authorized to post a reply.
Forums > Temas de Interés > General .NET > Array de instancias de clases



ActiveForums 3.7
        
Copyright 2001-2012 MUGPERU   Terms Of Use  Privacy Statement