C#:プロパティの基本
C#とJavaは言語仕様がすごく似ているのですが(というかC#がJavaのパクリみたいなもん)、C#の特徴としてプロパティというものがあります。
基本的にプロパティがなくても、メソッドがあれば十分なのですが、プロパティの方がコードがシンプルになるので積極的に使わない手はありません。
基本的なところを抑えておきます。
プロパティの基本形
プロパティの基本形はこちらです。
public class Member{ public Member(int id, string name, string prefecture, int age){ this.ID = id; this.Name = name; this.Prefecture = prefecture; this.Age = age; } public int ID{ get; set; } public string Name{ get; set; } public string Prefecture{ get; set; } public int Age{ get; set; } }
プロパティがどれだけシンプルに書けるか、わかりやすいところでこれをもしメソッドで書いたらどうなるか。それがこちら。
public class Member{ private int id; private string name; private string prefecture; private int age; public Member(int id, string name, string prefecture, int age){ this.id = id; this.name = name; this.prefecture = prefecture; this.age = age; } public int getID(){ return id; } public string getName(){ return name; } public string Prefecture(){ return prefecture; } public int Age(){ return age; } public int setID(int id){ this.id = id; } public string setName(string name){ this.name = name; } public string Prefecture(string prefecture){ this.prefecture = prefecture; } public int Age(int age){ this.age = age; } }
かなりごちゃごちゃしていますが。
gettar/setterをそれぞれ書かなきゃいけないし、メンバ変数も用意しなければなりません。プロパティの方が書くの楽ですね。
構造体と何が違うんだと思われそうですが、クラスの方が中で計算できたりと色々便利です。もちろん、データの保持だけを目的とする場合は構造体だけでもOKです。
プロパティの使い方
普通のクラス宣言と同じように使えばOKです。
コンストラクタで各データを投げてやれば、あとはプロパティで値を得ることができるわけですね。この辺りの仕組みはメソッドとほぼ同じです。
Member m = new Member(1, "山田 太郎", "東京都", 51); MessageBox.Show(m.ID +": "+ m.Name +" ("+ m.Age +") "+ m.Prefecture);
これを実行すると、ご覧のとおりとなります。
ジェネリックを使ってリスト化
よくやる手として、クラスをジェネリックにまとめるとデータのリスト化が可能になります。データベースのデータを扱う時に便利です。
Addメソッドでデータをどんどん追加していっていることがわかると思います。配列でも可能ですが、あらかじめ要素数を設定しなくていいのが、Listクラスの良いところ。
List<Member> members = new List<Member>(); members.Add(new Member(1, "山田 太郎", "東京都", 51)); members.Add(new Member(2, "鈴木 次郎", "大阪府", 38)); members.Add(new Member(3, "渡辺 隆", "福岡県", 43)); members.Add(new Member(4, "佐藤 一男", "岩手県", 61));
以下のように、すべてのデータを表示する方法です。
string mess = ""; foreach(Member member in members){ mess += member.ID +": "+ member.Name +" ("+ member.Age +") "+ member.Prefecture +"\n"; } MessageBox.Show(mess);
結果はご覧の通り。
スポンサーリンク