В C # / .Net объекты могут быть классифицированы как значения или ссылочные типы [1].Типы значений - это любые типы, производные от System.ValueType
и определенные в C # с объявлением типа struct
.Они передаются копией / значением.
Ссылочные типы - это типы, которые не являются производными от System.ValueType
и определены в C # с ключевым словом class
.Идентификаторы экземпляров ссылочных типов называются ссылками (аналогично указателям).По умолчанию они также передаются по значению, но передается только ссылка, а не весь объект.
В вашем вопросе также упоминалось, что string
экземпляры передаются копией.String
в .Net является ссылочным типом (происходит непосредственно от System.Object
) и, следовательно, не передается полной копией.
[1] Указатели могут заслужить здесь свой класс, но я игнорирую их для этого обсуждения.