Ваш супруг живет по адресу: Улица Сезам Улица 123.
Запишите на листе бумаги: SPOUSE: 123 Улица Сезам.
Теперь вы записываете на другой лист бумаги: КЛИЕНТ :. Затем вы копируете все, что говорится после SPOUSE на первом листе бумаги.
Теперь у вас есть два листа бумаги. Один говорит «SPOUSE: 123 Улица Сезам». Другой говорит: «КЛИЕНТ: 123 Улица Сезам».
Теперь вы удаляете адрес на странице с сообщением SPOUSE.
Что теперь говорит о том, что говорит CLIENT?
Ваше замешательство очевидно при выборе жаргона.
Не говорите, что «делает мелкую копию». Скажем, «копирует ссылку», потому что это то, что вы делаете. «Мелкий» относителен, не говоря о том, что. Скажите, что на самом деле происходит: значение копируется и значение является ссылкой.
Не говорите, что «этот объект имеет значение null». Это как сказать «автомобиль на моей подъездной дорожке, которого нет»; это бессмысленно. A переменная может содержит нулевую ссылку. A ссылка может быть нулевой ссылкой; это ссылка, которая ссылается на какой-либо объект. Но это не объект; это отсутствие объекта.
Когда вы делаете свой язык точным, эти разногласия начинают быстро падать.
Это не мелкая копия. Если «клиент» и «супруг» являются ссылочными типами (т. Е. Если они являются экземпляром класса), вы меняете * указатели *, а не копируете данные. И даже если бы он * сделал мелкую копию, можно было бы ожидать, что «клиент» не будет пустым, так как это копия исходного супруга – Rob
. Чтобы добавить к этому, единственный раз, когда эта функция будет выполняться в «Normal C#», будет для параметров 'ref'. – Rob
Правильно, они являются ссылочными типами. Спасибо, Роб. Я бы отметил это как ответ, но его комментарий. – Robert