Список <T> - передать объекты или ссылки?

Ну, я просмотрел дженерики и задал следующий вопрос:

List<someClass> list=new List<someClass>

SomeClass MyInstance=SomeClass();

list.Add(MyInstance);

Я не уверен, что будет добавлено в список - ссылка или объект ссылочного типа (указывающий на фактическое значение MyInstance).
EDIT: Или я добавлю значение (это ссылочный тип данных), который указывает на фактический объект?

Спасибо

Ответы

Ответ 1

Когда вы работаете со ссылочными типами, вы всегда имеете дело со ссылками, поэтому в список будет добавлена ​​ссылка (на самом деле копия ссылки). У вас фактически нет выбора; как работает язык.

Ответ 2

Предполагая, что someClass является ссылочным типом (например, классом), а не типом значения (например, struct), то его ссылкой.

Также я признаю, что было бы довольно дьявольски определить структуру с именем someClass

struct someClass

И здесь обязательная ссылка в статью о Джоне Ските о передаче параметров.

Ответ 3

Так как someClass является ссылочным типом, ссылка на MyInstance будет скопирована в список.

Ответ 4

будет добавлена ​​ссылка, так как MyInstance имеет ссылочный тип

Ответ 5

В списке будет сохранена ссылка объекта вместо экземпляра объекта.

Фактически, значение хранилища списка используется с помощью массива, а массив хранит ссылку в стеке и сохраняет экземпляр объекта в куче.

Ответ 6

Если вы разместите свой объект следующим образом

MyInstance = null

то вы не можете прочитать объект MyInstance,

но вы все еще можете прочитать объект в списке,

потому что у вас есть две ссылки на MyInstance,

Другими словами, объект имеет две ссылки,

один

SomeClass MyInstance=SomeClass();

другой хранится в списке,

и вы просто распоряжаетесь одним из них,

чтобы вы все еще могли прочитать список [0]