Параметр у методі, здається, завжди передає копію, питання - це копія того, що. Копія робиться конструктором копій для об'єкта, і оскільки всі змінні є "Об'єктом в C #", я вважаю, що це стосується всіх них. Змінні (об'єкти) схожі на людей, що живуть за деякими адресами. Ми або змінюємо людей, які живуть за цими адресами, або можемо створювати більше посилань на людей, які живуть за цими адресами в телефонній книзі (робимо дрібні копії). Отже, більше однієї ідентифікатора може посилатися на одну і ту ж адресу. Типи посилань хочуть більше простору, тому на відміну від типів значень, які безпосередньо пов'язані стрілкою до їх ідентифікатора в стеку, вони мають значення для іншої адреси в купі (більший простір для проживання). Цей простір потрібно взяти з купи.
Тип значення: Індикатор (містить значення = адреса значення стека) ----> Значення типу значення
Тип довідки: Ідентифікатор (містить значення = адреса значення стека) ----> (містить значення = адреса величини купи) ----> Значення купи (найчастіше містить адреси до інших значень), уявіть, що більше стрілок стикаються в різних вказівки до масиву [0], масиву [1], масиву [2]
Єдиний спосіб змінити значення - це слідувати стрілками. Якщо одна стрілка загубиться / зміниться у спосіб, недоступний для цього значення.