Типы по значению и типы по ссылке. Тип struct в C# является типом по значению.
C# имеет 15 предопределенных типов (13 по значению и 2 (string и object) по ссылке).
В C# тип object является исходным типом-предком, от которого берут начало все внутренние и все определенные пользователем типы. Ссылку object можно использовать для привязки к любому объекту любого частного подтипа.
Тип string является типом по ссылке (размещается в куче). Когда одна строковая переменная присваивается другой строковой переменной, в результате получается две ссылки на одну и ту же строку в памяти. Однако если впоследствии будут сделаны изменения в одной из этих строк, это создаст совершенно новый объект string, в то время как другая строка останется неизменной.
Читать далее...