Property Let
es más versátil que Property Set
. Este último está restringido a referencias de objeto solamente. Si usted 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
Puede llamar Property Set Picture
con
Set oObj.Picture = Me.Picture
Puede llamar Property Let Picture
tanto con
Let oObj.Picture = Me.Picture
oObj.Picture = Me.Picture
La implementación Property Set
es lo que otros desarrolladores esperan para las propiedades que son referencias de objetos pero a veces incluso Microsoft proporciona solo Property Let
para propiedades de referencia, lo que lleva al sintaxis sual oObj.Object = MyObject
sin declaración Set
. En este caso, utilizando la instrucción Set
se genera un error de tiempo de compilación o de tiempo 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 - fuentes, imágenes, etc. - pero con semántica diferente. Por lo general, en Property Let
tiendo a realizar una "copia profunda", es decir, clonando el StdFont
en lugar de simplemente mantener una referencia al objeto original.
No está relacionado con WithEvents, se trata de devolver referencias de objetos como propiedades. Hay muchas ocasiones en las que desea hacer esto, generalmente cuando tiene algún tipo de jerarquía de objetos. – Bob77
incorrecto 'Property Get' se usa para devolver referencias de objetos como propiedades, no' Property Set'. – mwolfe02
http://msdn.microsoft.com/en-us/library/aa266202(VS.60).aspx: al igual que los procedimientos 'Function' y' Property Get', un procedimiento 'Property Set' es un procedimiento separado que puede tomar argumentos, realizar una serie de declaraciones y cambiar el valor de sus argumentos. ** Sin embargo, a diferencia de los procedimientos 'Function' y' Property Get', que devuelven un valor, solo puede usar un procedimiento 'Property Set' en el lado izquierdo de una asignación de referencia de objeto (instrucción' Set').** – mwolfe02