Я думаю, что все начинается с определения LSP
(Принцип замещения Лискова), который climes:
, если q (x) - свойство, доказуемое об объектах x типа T, то q ( y) должно быть истинным для объектов y типа S, где S является подтипом T.
blockquote>Но типы значений, например
int
, не могут быть замененыobject
вC#
. Доказательство очень просто:int myInt = new int(); object obj1 = myInt ; object obj2 = myInt ; return ReferenceEquals(obj1, obj2);
Это возвращает
false
, даже если мы назначим ту же «ссылку» на объект.