最近、シンタックスシュガー(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文のシンタックスシュガー
Listar; // 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とか...)
# さて、このエントリーで何回「シンタックスシュガー」と書いたでしょう