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?

Author: essential, 2011-02-18

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.).)

 22
Author: mwolfe02,
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.

 22
Author: wqw,
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)

 3
Author: Foo Bah,
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