本記事では『プロパティ』のザックリとした解説をしていきます。
初めに伝えておくと、”メンバ変数へのクラス外部から直接アクセスができてしまうのは好ましくない”です。
その理由の1つが”外部からの不正な値を書き込まれるケースがあり、予期せぬエラーが生じる”ためです。
なので、本記事の後に『カプセル化』を読んでもらうことをお勧めします。
プロパティの使い方
プロパティのサンプル
本記事で使うプロパティを持ったクラスは下の通りです。※通常の書き方。
下のコードでは「一人分の個人情報」といったクラスを表現しています。
1 2 3 4 5 6 7 8 |
class Person { // プロパティを指定 public string name { get; set; } public string sex { get; set; } public int age { get; set; } public string birthplace { get; set; } } |
上のように変数に『set・get』が書かれている部分がプロパティになります。
これらのプロパティには修飾子が『public』が指定されています。
この修飾子publicで指定したプロパティは外部クラスから『インスタンス名.プロパティ名』を使って値の代入、取得ができるようになります。
宣言と初期化を別にする
まずは宣言と初期化を別々に行う書き方です。※プロパティへの代入は13~16行目です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System; namespace sample { class Program { static void Main() { // Personクラスをインスタンス生成 var person = new Person(); // Personクラスのプロパティに値を代入 person.name = "田中太郎"; person.sex = "男"; person.age = 20; person.birthplace = "東京都"; // Personクラスのプロパティの出力 Console.WriteLine(person.name); Console.WriteLine(person.sex); Console.WriteLine(person.age); Console.WriteLine(person.birthplace); } } } // プロパティを扱うクラス class Person { // プロパティを指定 public string name { get; set; } public string sex { get; set; } public int age { get; set; } public string birthplace { get; set; } } |
13~16行目:『名前・性別・年齢・出身地』のプロパティに値を代入している。
19~22行目:『インスタンス名.プロパティ名』で値を取得し、コマンドプロンプトに表示している。
実行結果
田中太郎
男
20
東京都
インスタンス化と初期化を同時に行う
上ではインスタンス化と初期化を別々に行いました。
次にそれらを同時に行う書き方を紹介します。※赤文字が同時に行う書き方です。
【インスタンス化と初期化が別々(上のコード:9~16行目)】
// Personクラスをインスタンス生成
var person = new Person();
// Personクラスのプロパティに値を代入
person.name = “田中太郎”;
person.sex = “男”;
person.age = 20;
person.birthplace = “東京都”;
【インスタンス化と初期化を同時に行う】
// Personクラスをインスタンス生成 + 初期化
var person = new Person
{
name = “田中太郎”,
sex = “男”,
age = 20,
birthplace = “東京都”,
};
インスタンス化と初期化を同時に行うときには『{ };』で囲みます。
そして、プロパティへの値の代入は”インスタンス名は書く必要はない”です。
スポンサーリンク