En VB6 ¿cuál es la diferencia entre Propiedad Establecida y Propiedad Alquilada?
Acabo de crear varios métodos Property Set
, y no compilaron. Cuando los cambié a Property Let
, todo estaba bien.
Desde entonces he estudiado la documentación para encontrar la diferencia entre Property Set
y Property Let
, pero debo admitir que no soy el más sabio. ¿Hay alguna diferencia, y si es así podría alguien ofrecer un indicador para una explicación adecuada de ello?
3 answers
Property Set
es para objetos (por ejemplo, instancias de clase)
Property Let
es para tipos de datos" normales " (por ejemplo, string, boolean, long, etc.).)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-24 14:36:01
Property Let
es más versátil que Property Set
. Este último está restringido a referencias de objetos solamente. Si tiene esta propiedad en una clase
Private m_oPicture As StdPicture
Property Get Picture() As StdPicture
Set Picture = m_oPicture
End Property
Property Set Picture(oValue As StdPicture)
Set m_oPicture = oValue
End Property
Property Let Picture(oValue As StdPicture)
Set m_oPicture = oValue
End Property
Puedes llamar a Property Set Picture
con
Set oObj.Picture = Me.Picture
Puedes llamar Property Let Picture
con ambos
Let oObj.Picture = Me.Picture
oObj.Picture = Me.Picture
Implementar Property Set
es lo que otros desarrolladores esperan para las propiedades que son referencias a objetos, pero a veces incluso Microsoft proporciona solo Property Let
para las propiedades de referencia, lo que lleva a la sintaxis inusual oObj.Object = MyObject
sin la instrucción Set
. En este caso usando la instrucción Set
conduce a un error en tiempo de compilación o de ejecución porque no hay Property Set Object
implementado en la clase oObj
.
Tiendo a implementar tanto Property Set
como Property Let
para propiedades de tipos estándar fonts fuentes, imágenes, etc but pero con semántica diferente. Normalmente en Property Let
tiendo a realizar "copia profunda", es decir, clonar el StdFont
en lugar de simplemente sostener una referencia al objeto original.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-19 07:41:29
Property Set
es para variables similares a objetos (ByRef) mientras que Property Let
es para variables similares a valores (ByVal)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-18 14:24:29