constとリードオンリー

たとえば、IReadOnlyListといったインターフェースを作れば、配列を受け渡した時に中身を書き換えないという約束を明示できる。つまりsetをなくすことが出来、配列の書き換えが出来なくなるが、オブジェクトの書き換えは出来てしまう(stringのように書き換えられないオブジェクトなら別だが)

この不整合は危険で、リードオンリーコレクションを静的に作るにはC++のconstが必要になる。書き換えを伴うメソッドは呼び出さないという約束だ。

しかしまともな脳みそを持った人間なら、受けとった配列の中身を書き換えようとは思わないのでまともな脳みそを持った人間にはいらない機能だ。そして書き換えてはいけない状況かどうかが認識できるまともな頭脳を持ってないとconstは使用できないので根本的にconstという機能は無意味だ。