Строка является ссылочным типом, хотя она обладает большинством характеристик типа значения, например неизменяемостью и перегрузкой == для сравнения текста, а не для проверки того, что они ссылаются на один и тот же объект.
Почему тогда строка не является просто типом значения?
Подробнее здесь: https://stackoverflow.com/questions/636 ... value-type