Clases y tipos definidos por el usuario

26/02/2005 - 14:23 por LSRI | Informe spam
Estoy creando una clase y el problema viene cuando las propiedades son de un
tipo definido por el usuario (propio).
Estos tipos los defino con STRUCTURE.
Como definio un tipo q solo tenga un campo. Por ejemplo, definir el tipo de
dato con nombre MEMORIA y q sea un array de 50 elemento de tipo DOUBLE.

En el caso de propiedades q contengan otras (propiedad1.proiedad2), como se
escribe la propiedad (PROPERTY)?
Si escribo, por ejemplo, link.ant = 4. Me indica w link.ant es un valor y no
se le puede asignar.

Este es el codigo de la clase:

Public Class Lista
'tipos de datos propios
Structure tEnlace
Public sig As Int16
Public ant As Int16
End Structure
Structure tValor
Public tipo As String
End Structure
'
'variables privadas
Private _elemento As tValor
Private _link As tEnlace
Private _eliminado As Boolean
'
'propiedades publicas
Public Property Elemento() As tValor
Get
Return _elemento
End Get
Set(ByVal Value As tValor)
_elemento = Value
End Set
End Property
Public Property Link() As tEnlace
Get
Return _link
End Get
Set(ByVal Value As tEnlace)
_link.ant = Value.ant
_link.sig = Value.sig
End Set
End Property
'
End Class

Me vasta con q me inkes donde encontrar informacion al respecto.
GRACIAS.
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
26/02/2005 - 15:07 | Informe spam
Como definio un tipo q solo tenga un campo. Por ejemplo, definir el
tipo de dato con nombre MEMORIA y q sea un array de 50 elemento de
tipo DOUBLE.



¿Te refieres a hacer algo como un typedef de C? Si es eso entonces la
respuesta es que no hay forma. Tampoco puedes definir un array de tamaño
fijo en una estructura.

En el caso de propiedades q contengan otras (propiedad1.proiedad2),
como se escribe la propiedad (PROPERTY)?
Si escribo, por ejemplo, link.ant = 4. Me indica w link.ant es un
valor y no se le puede asignar.



El problema viene porque estas usando una estructura. Las estructuras son
tipos de valor y por lo tanto al pasarlas entre metodos lo que se hace es
copiarlas. Como la propiedad Link devuelve una copia no tiene sentido
cambiar uno de los miembros ya que no estas modificando la estructura que
esta dentro de la clase. La solucion es usar una clase en lugar de una
estructura.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Hay dos cosas infinitas: el universo y la estupidez humana.
Albert Einstein

Preguntas similares