list(of Miestructura)

03/10/2006 - 11:58 por Leonardo | Informe spam
Da la impresión de que list(of ...) remplaza con ventaja a arraylist y es
similar a system.Array.

Pero si tengo
dim rr(n) as Rectangle, ar as arraylist, lr as list(of rectangle)

puedo hacer rr(1).inflate(1,1) , directcast(ar(1),rectangle).inflate(1,1)
pero no con lr ya que item se devuelve por valor...

¿ Se le ocurre a alquien un generics similar a list(of...) donde item se
devuelva por referencia ?
 

Leer las respuestas

#1 Alberto Poblacion
03/10/2006 - 16:56 | Informe spam
"Leonardo" wrote in message
news:
dim rr(n) as Rectangle, ar as arraylist, lr as list(of rectangle)

puedo hacer rr(1).inflate(1,1) , directcast(ar(1),rectangle).inflate(1,1)
pero no con lr ya que item se devuelve por valor...



Lo que ocurre es que Rectangle es un tipo Valor, y cuando lo metes en el
ArrayList, que es de tipo Object, se produce una operación de
Boxing/UnBoxing que lo "convierte" en tipo Referencia para poderlo meter
dentro del Object. Precisamente la gran ventaja del List(Of...) es que
elimina los Boxing y UnBoxing (con lo que procesa por valor los tipos valor
y por referencia los tipos referencia) y además es "strongly typed". Si
quieres que funcione por referencia, y por lo tanto convierta el tipo Valor
en un tipo Referencia por medio de boxing, la forma de conseguirlo es
definir una Clase que contenga dentro el Rectangle, con lo que efectivamente
encapsulas el tipo-valor en un tipo-referencia, a la vez que, por usar el
list(of), mantienes el "strong typing" que no tiene el ArrayList.

Otra cosa que puedes hacer, manteniendo el funcionamiento como
tipo-valor: lr(1)=lr(1).Inflate(1,1)

Preguntas similares