タイトルの機能をC#上で実装する、というタスクをRemember The Milkでもう二年以上放置してる。理由はC#自体に触らなくなったからなんだが、これを見た人だれか実装してくれないだろうか。
実装方法はわりと簡単で、ReadOnlyIntクラスを定義してフィールドにint型のプリミティブを保持し、演算子オーバーロードでint型変数とも演算できるようにすればよい。またC#3.0?当たりで追加されたmix-inを用いれば、int, floatなどプリミティブ型ともシームレスに操作できるようになるはず。
なぜこれが必要かというと、C#には定数を表すことが出来る修飾子がないから。これがないため、Scala関数型言語のような値が基本定数の環境になれた頭では、いつ値が変わるかわからないという恐怖に怯えなければならず、非常に不安なのだ。そのためC#上でも不変型プリミティブを作ろうと思っていたのだが、その内C#を使う機会がなくなってしまい結局作らずじまいになってしまったのだ。
というわけで、おそらく需要はあると思うので、これを見た方で興味がある人は是非実装して公開してください。