変数とプロパティはどちらも、アクセスできる値を表します。 ただし、ストレージと実装には違いがあります。
変数
変数は、メモリの場所に直接対応します。 1 つの宣言ステートメントで変数を定義します。 変数は、 ローカル変数で、プロシージャ内で定義され、そのプロシージャ内でのみ使用できます。また、モジュール、クラス、または構造体で定義された メンバー変数でもかまいませんが、プロシージャ内では使用できません。 メンバー変数は フィールドとも呼ばれます。
特性
プロパティは、モジュール、クラス、または構造体で定義されたデータ要素です。
Property
ステートメントとEnd Property
ステートメントの間にコード ブロックを持つプロパティを定義します。 コード ブロックには、 Get
プロシージャ、 Set
プロシージャ、またはその両方が含まれています。 これらのプロシージャは、 プロパティ プロシージャ または プロパティ アクセサーと呼ばれます。 プロパティの値を取得または格納するだけでなく、アクセス カウンターの更新などのカスタム アクションを実行することもできます。
相違点
次の表は、変数とプロパティの重要な違いを示しています。
相違点 | 変数 | プロパティ |
---|---|---|
申告 | 単一宣言ステートメント | コード ブロック内の一連のステートメント |
実装 | 単一のストレージの場所 | 実行可能コード (プロパティ プロシージャ) |
ストレージ | 変数の値に直接関連付けられている | 通常、内部ストレージは、プロパティの包含クラスまたはモジュールの外部では使用できません プロパティの値は、格納されている要素として存在する場合と存在しない場合があります 1 |
実行可能コード | 無し | 少なくとも 1 つのプロシージャが必要です |
読み取りと書き込みアクセス | 読み取り/書き込みまたは読み取り専用 | 読み取り/書き込み、読み取り専用、または書き込み専用 |
カスタム アクション (値の受け入れまたは戻り値に加えて) | 無理です | プロパティ値の設定または取得の一環として実行できます |
1 変数とは異なり、プロパティの値はストレージの 1 つの項目に直接対応していない可能性があります。 ストレージは、便宜上、またはセキュリティのために分割されるか、値が暗号化された形式で格納される場合があります。 このような場合、 Get
プロシージャはピースをアセンブルするか、ストアド値を復号化し、 Set
プロシージャは新しい値を暗号化するか、構成ストレージに分割します。 プロパティ値は、時刻などの一時的な値である可能性があります。その場合、 Get
プロシージャは、プロパティにアクセスするたびにその場で計算します。
こちらも参照ください
.NET