2010年10月12日
川俣晶の縁側ソフトウェア技術雑記 total 4030 count

null排斥とC#

Written By: 川俣 晶連絡先

 久々に偶然いい話を見たのでメモ。

 言語設計者たちが考えることを経由して、『【13-B-7】言語の現在・過去・未来を語る』話題メモ - C# sideより。

言語設計で後悔していること

null の扱い

Ruby の nil はすばらしい

 では、Rubyのnilとは何かといえば、「何も無いことを示すオブジェクト」で、何を呼んでもnil値自身が帰ってくるようなものだそうです。(Rubyは昔かじっただけなので、詳しいことは知らない)

 まあ、Rubyの話はともかく。

 リファクタリングのカタログにもnullを辞めて何もしないオブジェクトを使おうという項目があったり、nullはあまり好まれていません。実際、トラブルも多いし。

 しかし、C#の進化は、「null許容型を追加する」「null合体演算子を入れる」等の形でnullに優しいと言えます。むしろ、欲しかったのはnull非許容型の方なのですけどね。(構造体じゃ制約が多くてダメだよ)。

 ですが、そう思いう思いが背景にあっても、互換性のために変更できないだけならまあいいか。こちらも、null前提のC#ソース資産が膨大だから、今更変更されても困るし。

 まあ当分安心してC#で書き続けて問題なさそうですね。