質問: C#にはなぜconstが無いのか? 今更ですがC#を勉強中のC++プログラマーです。 C#にはC++の機能を受け継いだものも少なくないですが、なぜC++のようなconstの機能は受け継がれなかったのでしょうか? (C#にもconstキーワード自体はあるが機能はかなり限定されている) 特に関数の入力パラメーターには必ずconstを付けるC++プログラマーにとって、constがないと不安になります。 # 実はあまり役立っていなかったのか、使いこなせない人が多かったのか...
回答: Anders Hejlsberg(C#設計者)が以下の記事のImmutablesで述べています。 適当に抜粋、翻訳すると、 ミューテーションは、効率化のためキャッシュを持つことを必ずしも否定しない。外部から見た振る舞いが同じであることがミューテーションだ。イミュータブルは便利だが、それは作者がそう言っておけばよい と言っています。 以下、自分の文章 引数やmethodにconstがあると後からキャッシュを持たせて、効率化をはかるといったことができないといったことが理由のようです。特別に必要ならstringのように変更があるときは新しいオブジェクトを返すなどのようにして実現するようにということなのでしょう。