Visual Basic 中屬性和變數的差別
變數和屬性都代表可存取的值。 然而,儲存區和實作會有所不同。
變數
「變數」(Variable) 會直接對應到記憶體位置。 您可以使用單一宣告陳述式來定義變數。 變數可以是「區域變數」(Local Variable) (定義在程序內,且只可在該程序內使用),或者也可以是「成員變數」(Member Variable) (定義在模組、類別或結構內,而不在任何程序內)。 成員變數也稱為「欄位」(Field)。
屬性
「屬性」(Property) 是定義在模組、類別或結構上的資料項目。 您可以使用 Property 和 End Property 陳述式間的程式碼區塊來定義屬性。 程式碼區塊包含 Get 程序、Set 程序,或是兩者皆含。 這些程序稱為「屬性程序」(Property Procedure) 或「屬性存取子」(Property Accessor)。 除了擷取或儲存屬性值之外,它們也可執行自訂動作 (例如,更新存取計數器)。
差異點
下表會顯示變數和屬性間的一些重要差異點。
差異點 |
變數 |
屬性 |
---|---|---|
宣告 |
單一宣告陳述式 |
程式碼區塊中的一連串陳述式 |
實作 |
單一儲存區位置 |
可執行的程式碼 (屬性程序) |
儲存區 |
直接與變數值產生關聯 |
一般會有內部儲存區,不可在屬性的包含類別或模組外部使用 屬性值可能是以預存項目 1 的形式存在,也可能不存在 |
可執行的程式碼 |
無 |
至少必須有一個程序 |
讀取和寫入存取權 |
讀取/寫入或唯讀 |
讀取/寫入、唯讀或唯寫 |
自訂動作 (除了接受或傳回值外) |
不可能 |
可當成設定或擷取屬性值的一部分來執行 |
1 與變數不同,屬性值不可直接對應到儲存區的單一項目。 基於便利性或安全性,可將儲存區分割成數個片段,或用加密形式來儲存該值。 在這些情況下,Get 程序會組譯這些片段,或解密預存值,而 Set 程序會將新的值加密,或將它分割為構成儲存區。 屬性值可能是短暫的 (像每天的時間),在這種情況下,Get 程序會在每次存取該屬性時,立即計算它。
請參閱
工作
HOW TO:宣告混合存取層級的屬性 (Visual Basic)
HOW TO:在 Visual Basic 中宣告及呼叫預設屬性