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