Properties 属性Let在VB中的含义是什么?
我经常遇到这样的代码Properties 属性Let在VB中的含义是什么?,properties,vb6,Properties,Vb6,我经常遇到这样的代码 Public Property Get MyProperty() As String MyProperty = m_MyProperty End Property Public Property Set MyProperty(ByVal value As String) m_MyProperty = value End Property 甚至: Public Property Get MyProperty() As String Return m
Public Property Get MyProperty() As String
MyProperty = m_MyProperty
End Property
Public Property Set MyProperty(ByVal value As String)
m_MyProperty = value
End Property
甚至:
Public Property Get MyProperty() As String
Return m_MyProperty
End Property
我从来没有遇到过这个
Public Property Let MyProperty(ByVal value As String)
m_MyProperty = value
End Property
Let关键字是否与Set相同
根据这篇文章,似乎是这样
MSDN声明: 声明构成Property Let过程主体的名称、参数和代码,该过程为属性赋值 声明构成属性过程主体的名称、参数和代码,属性过程设置对对象的引用 除此之外,根据MSDN定义: 控件、字段或对象的命名属性,用于定义对象的一个特征(如大小、颜色或屏幕位置)或其行为的一个方面(如对象是否隐藏) 在Microsoft Access数据库中看到的对象:
- 表、查询、窗体、报表、宏和模块
- 由系统定义的对象,例如MSysObjects表
- 存储在Access项目文件中的对象:窗体、报表、宏和模块
- 存储在Microsoft SQL Server数据库中的对象:表、表属性(例如>-索引、触发器、键、约束、默认值、规则和用户定义的数据类型)、视图、存储过程和数据库关系图
- 由系统定义的对象,如sysindexes表
- 数据访问页,是指向文件系统中存储的相应HTML文件的快捷方式(显示在数据库窗口中)
- 来自其他应用程序的信息,如图表或图形
它们真的可以互换吗?你几乎回答了你自己的问题 从MSDN文档中可以看到,属性的
Let
声明用于分配值,即用于除对象之外的任何数据类型(通常通过Set
进行分配)
因此,按照相同的逻辑,如果您希望/需要能够将对象分配给属性,并且仅将对象(键入或不键入)分配给属性,则将使用集
声明
那么,假设你有:
Property Let MyFirstProperty(NewValue As String)
m_sMyFirstProperty = NewValue
End Property
Property Set MySecondProperty(NewValue As Object)
Set m_oMySecondProperty = NewValue
End Property
那么,以下操作将不起作用:
' This won't work
MyFirstProperty = CreateObject("...")
' Neither will this
Set MyFirstProperty = CreateObject("...")
' Also, the following won't be allowed
MySecondProperty = "My new string"
但以下两项声明将:
MyFirstProperty = "My new string"
Set MySecondProperty = CreateObject("...")
注意您可以同时对同一属性进行Let
和Set
声明,具体取决于您要执行的操作:
- 与其他数据类型(使用
)相比,您可以以不同的方式处理分配给属性的对象(通过Let
集合
声明)李>
- 或者,如果属性的内部变量是变量,并且希望允许将对象和标量值都指定给属性
- 如果要将值指定给属性(对象除外),请为属性添加
处理程序Let
- 如果要为属性指定objets,则需要属性的
处理程序Set