变量和属性都表示可以访问的值。 但是,存储和实现存在差异。
变量
变量直接对应于内存位置。 使用单个声明语句定义变量。 变量可以是 局部变量,在过程内定义且仅在该过程内可用,也可以是 成员变量,在模块、类或结构中定义,但不能在任何过程中定义。 成员变量也称为 字段。
性能
属性是在模块、类或结构上定义的数据元素。 可使用 Property
和 End Property
语句之间的代码块定义属性。 代码块包含Get
过程、Set
过程,或两者都有。 这些过程称为 属性过程 或 属性访问器。 除了检索或存储属性的值外,它们还可以执行自定义作,例如更新访问计数器。
差异
下表显示了变量和属性之间的一些重要差异。
差异点 | 变量 | 资产 |
---|---|---|
声明 | 单个声明语句 | 代码块中的一系列语句 |
执行 | 单个存储位置 | 可执行代码(属性过程) |
储存 | 直接与变量的值关联 | 通常,内部存储在属性的包含类或模块之外不可用 属性的值可能存在或不存在作为存储元素 1 |
可执行代码 | 没有 | 必须至少有一个过程 |
读取和写入访问权限 | 读/写或只读 | 读/写、只读或只写 |
自定义操作(接受或返回值除外) | 不可能 | 可以在设置或检索属性值期间执行 |
1 与变量不同,属性的值可能不直接对应于单个存储项。 存储可能会被拆分为多个部分以方便或出于安全考虑,或者数值可能会以加密形式存储。 在这些情况下,Get
过程将装配片段或解密存储的值,而 Set
过程将加密新值或将其拆分为各个元件存储。 属性值可能是临时的,例如一天中的时间,在这种情况下,程序会在每次访问该属性时即时计算它。