Разъяснение текста MSDN - типы ссылок являются объектами - PullRequest
2 голосов
/ 20 января 2011

На MSDN можно прочитать следующее:

Ссылочные типы также упоминаются как объекты

Я не понимаю. Я думал, что значение ссылочного типа указывает на реальный объект, который живет в куче, то есть, по крайней мере, я бы сказал: «Экземпляры ссылочных типов также называются объектами». Или я что-то упустил?

Также часто упоминается "переменная ссылочного типа" ... но я могу иметь только значение ссылочного типа, когда оно, например, сохранено в списке. Я правильно понял?

Ответы [ 3 ]

2 голосов
/ 20 января 2011

Жаргон может быть немного запутанным, поскольку очень легко (и часто) быть неаккуратным.

class Foo { }
Foo f = new Foo();

Это определяет ссылочный тип Foo, а следующая строка определяет ссылочную переменную f, которая указывает на анонимный экземпляр (объект) Foo. Обратите внимание, что работа с объектом всегда включает две «вещи». Мы часто немного упрощаем, говоря: «f - это объект Foo», и хотя это практично, это не полная правда.

Несколько моментов, которые могут помочь:

  • экземпляры (объекты) не имеют имени
  • вы называете только ссылочные переменные
  • вы не можете передать экземпляр (сам) в качестве параметра или возвращаемого значения
  • вы не можете создавать массивы экземпляров
  • это означает, что вы можете только передавать / копировать / хранить ссылки
  • эти ссылки ведут себя точно так же, как типы значений (!)

Обратите внимание, что когда вы смотрите на interface типы, то есть только эталонная половина, нет «экземпляров» интерфейсов.

1 голос
/ 20 января 2011

Значение ссылки указывает на объект в куче.Сам объект является ссылочным типом , потому что вы обращаетесь к нему через ссылку.(Хотя все перенаправление через ссылку прозрачно для вас. Вы можете подумать, что вы передаете объект String, но на самом деле вы передаете ссылку на строковый объект, который разыменован для вас.)1006 * Сама ссылка (т. Е. Указатель, а не объект в куче) является типом значения - просто чтобы запутать вещи.

0 голосов
/ 20 января 2011

Вы можете себе представить, что слово «Ссылка» просто означает «Указатель»;список объектов вашего собственного класса содержит ссылки / указатели на объекты, выделенные в куче.

...