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);
結果はご覧の通り。
スポンサーリンク

