非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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);

 

結果はご覧の通り。

 

 

スポンサーリンク

 - C#基本編