いくつかのProperty Set
メソッドを作成しましたが、コンパイルされませんでした。それらをに変更したときProperty Let
、すべてが順調でした。
Property Set
それ以来、との違いを見つけるためにドキュメントを調べましたProperty Let
が、賢明ではないことを認めなければなりません。違いはありますか?もしそうなら、誰かがそれの適切な説明へのポインタを提供できますか?
いくつかのProperty Set
メソッドを作成しましたが、コンパイルされませんでした。それらをに変更したときProperty Let
、すべてが順調でした。
Property Set
それ以来、との違いを見つけるためにドキュメントを調べましたProperty Let
が、賢明ではないことを認めなければなりません。違いはありますか?もしそうなら、誰かがそれの適切な説明へのポインタを提供できますか?
Property Set
オブジェクト(クラスインスタンスなど)用です
Property Let
「通常の」データ型(たとえば、文字列、ブール値、longなど)用です。
Property Let
よりも用途が広いですProperty Set
。後者はオブジェクト参照のみに制限されています。クラスにこのプロパティがある場合
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
あなたはで呼び出すことができProperty Set Picture
ます
Set oObj.Picture = Me.Picture
Property Let Picture
あなたは両方で呼び出すことができます
Let oObj.Picture = Me.Picture
oObj.Picture = Me.Picture
実装Property Set
は、他の開発者がオブジェクト参照であるプロパティに期待するものですが、Microsoftでさえ参照プロパティのみを提供する場合があり、ステートメントのないProperty Let
異常な構文につながります。この場合、ステートメントを使用すると、クラスに実装されていないため、コンパイル時または実行時のエラーが発生します。oObj.Object = MyObject
Set
Set
Property Set Object
oObj
Property Set
私は両方とProperty Let
標準タイプのプロパティ(フォント、画像など)を実装する傾向がありますが、セマンティクスは異なります。通常、Property Let
私は「ディープコピー」を実行する傾向があります。つまりStdFont
、元のオブジェクトへの参照を保持するだけでなく、クローンを作成します。
Property Set
オブジェクトのような変数(ByRef)Property Let
用であるのに対し、値のような変数(ByVal)用です