久々に偶然いい話を見たのでメモ。
言語設計者たちが考えることを経由して、『【13-B-7】言語の現在・過去・未来を語る』話題メモ - C# sideより。
言語設計で後悔していること
null の扱い
Ruby の nil はすばらしい
では、Rubyのnilとは何かといえば、「何も無いことを示すオブジェクト」で、何を呼んでもnil値自身が帰ってくるようなものだそうです。(Rubyは昔かじっただけなので、詳しいことは知らない)
まあ、Rubyの話はともかく。
リファクタリングのカタログにもnullを辞めて何もしないオブジェクトを使おうという項目があったり、nullはあまり好まれていません。実際、トラブルも多いし。
しかし、C#の進化は、「null許容型を追加する」「null合体演算子を入れる」等の形でnullに優しいと言えます。むしろ、欲しかったのはnull非許容型の方なのですけどね。(構造体じゃ制約が多くてダメだよ)。
ですが、そう思いう思いが背景にあっても、互換性のために変更できないだけならまあいいか。こちらも、null前提のC#ソース資産が膨大だから、今更変更されても困るし。
まあ当分安心してC#で書き続けて問題なさそうですね。