Зачем нужен бокс и распаковка в Microsoft CLR? - PullRequest
0 голосов
/ 05 декабря 2018

В java-типах, таких как bool, int и т. Д., Есть примитивы, то есть они по своей природе отличаются от ссылочных типов, поэтому java предоставляет средства для создания и распаковки примитивных типов.

Но в Microsoft CLR,типы значений наследуются от System.ValueType, который сам наследуется от System.Object.Так почему же в Microsoft CLR существует необходимость в упаковке и распаковке?

Одна из причин может заключаться в том, что класс ValueType предоставляет некоторые низкоуровневые хаки, которые позволяют обрабатывать типы значений, несколько похожие на структуры Си.Но тогда, если типы значений так сильно отличаются от ссылочных типов, зачем заставлять ValueType наследовать от Object?

Извините, если я сказал что-то невежественное.У меня нет большого опыта с языковым дизайном.Просто система типов CLR для меня не выглядит такой же последовательной, как система java.

...