【C#】プロパティ(setter/getter)の使い方

C#におけるプロパティ(setter/getter)の使い方についてソースコード付きでまとめました。

## 【はじめに】アクセサー

privateで隠蔽されたメンバー変数は、クラス外部から直接アクセスできません。
そのため、メンバー変数にアクセスして値を変更したり取り出すときは、それ用にpublicなメソッドを作成し、それを通して行うのが一般的です。


メンバー変数の値を取得したり書き換えるメソッドをアクセサー(accessor)といいます。
ただし、アクセサーを作っていくと上記のように、メンバー変数の数だけアクセサーを用意することになり、冗長なコードとなってしまいます。

## 【プロパティ】Getter/Setterの使い方

先程も述べたとおり、アクセサーを作っていくと冗長なコードとなってしまいます。
そこで、 C#ではクラス内部から見るとメソッドのように振る舞い、クラスの外部(利用側)から見るとメンバー変数のように振舞うプロパティという機能があります。
先程と同じアクセサーをプロパティで書くと以下のようになり、冗長なコードがかなり緩和されます。


このコードで実装し、あとからSumクラスの中身を修正しても、クラス利用側のコードに手を加える必要は一切ありません。

## 【自動プロパティ】Getter/Setterの省略

C# 3.0 以降では、プロパティ(get/set)の中身を次のように省略できる、自動プロパティ(auto-property, auto-implemented property)機能が使えます。


※get;だけ書くと、外部からは取得オンリー(書き換え不可)になります。

## 【自動プロパティ】初期化子

C# 6.0以降では、自動プロパティに対して初期値を与えられます。


## 【プロパティ】expression-bodiedで記述

読み込み専用[getだけ]のプロパティはexpression-bodied (本体が式の)形式で記述可能です。


【C#入門】基礎文法とサンプル集
C#言語の基本文法・使い方をサンプルプログラムのソースコード付きで解説します。
C#
スポンサーリンク
西住工房

コメント