12. Javaで書くと・・・
private int number;
public int getNumber()
{
return number;
}
// 知らない人の変更は許可しない
protected void setNumber(int n)
{
number = n;
}
• get○○、set○○というメソッドを実装
13. C#で書くと・・・
private int number;
public int Number
{
get
{ getは取得する際の処理を記述
return number;
}
protected set
{ setは設定する際の処理を記述
number = value;
valueは右辺値
}
}
14. 使う側は?
// クラスの外だと・・・
int num = instance.Number; // OK!!
instance.Number = 3; // Compile Error!!
// クラスの内部(or継承先の内部)だと・・・
int num = Number; // OK!!
Number = 3; // OK!!
• フィールドのように見えるがメソッド的なもの
15. 略記法
public int Number
{
get;
protected set;
}
• numberにあたるものが内部で定義される
24. LINQ
• Language Integrated Query
• SQLっぽくコレクションを扱える
– XMLやDBに対しても使えるらしい
DirectoryInfo info = new DirectoryInfo(dirPath);
foreach (var s in from p in info.GetFiles() 処理するコレクション
where p.Extension == “.html” htmlファイルのみ
orderby p.LastWriteTime 最終更新でソート
select p.FullName) ファイルパスを得る
{
Console.WriteLine(s); htmlファイルを最終更新でソートして表示
}
25. 拡張メソッド
• クラスに後付けでメソッドを追加した
ように見せかけることのできる機能
第一引数はthisを付けて、オブジェクト自身を受ける
public static int Square(this int num)
{
return (num * num);
}
int num = 3;
あたかもintのメソッドのように呼び出せる
int squared = num.Square(); // squared = 9