糖衣構文

最近、シンタックスシュガー(Syntax-Sugar)というものを知りました


シンタックスシュガーとは、元からある構文をより簡単に書けるようにするために導入された構文です

わかりやすいところでいうとC# 3.0かな


自動プロパティは、プロパティのシンタックスシュガー

// 通常のプロパティ
class Person
{
    private int _age;
    public int Age
    {
        get { return _age; }
        set { _age = value; }
    }
}

// 自動プロパティ
class Person
{
    public int Age { get; set; }
}

プロパティもゲッター/セッターのシンタックスシュガー



foreachはイテレータ...IEnumerableを使ったループなのでfor文のシンタックスシュガーではないです
foreachはfor文のシンタックスシュガー


List ar;

// for文
for (int index = 0; index < ar.Size; ar++)
    Console.WriteLine(ar[index]);

// foreach文
foreach (int value in ar)
    Console.WriteLine(value);

for文もwhile文のシンタックスシュガー


ほかにも
・拡張メソッドはヘルパーメソッドのシンタックスシュガー
・オブジェクト初期化子は引数コンストラクタのシンタックスシュガー


C# 3.0のラムダ式は匿名メソッドのシンタックスシュガーではない
 (C++0xラムダ式は関数オブジェクトのシンタックスシュガーといっていいかもしれないけど)


シンタックスシュガーが多い言語は、より簡単に導入できるから好まれやすいのかな



現在のC++ではシンタックスシュガーはほとんどないはず(for文くらい)

C++はライブラリでシンタックスシュガーを実現しています(Boost.ForeachとかBoost.Assignとか...)



# さて、このエントリーで何回「シンタックスシュガー」と書いたでしょう