Который является более легким объектом - PullRequest
1 голос
/ 11 сентября 2009

Я запутался здесь. Какой объект легче? такое orgWithNullImageCollection или orgWithImageCollection? в приведенном ниже коде. Или это более легкая концепция объекта вообще. Ниже приведен фрагмент кода для справки.


class Orgnization
{
    public Collection ImageCollection { get; set; }
}

Organization orgWithNullImageCollection = new Organization();
org.ImageCollection = null;


Collection imageCollection = new Collection();
// Adding 100 images to imageCollection

Organization orgWithImageCollection = new Organization();
org.ImageCollection = imageCollection;


Есть ли разница в производительности, если я передам эти два объекта любым другим методам? т.е. передача orgWithNullImageCollection поверх orgWithImageCollection?

Я полагаю, что не имеет значения, будет ли свойство ImageCollection объектов Organization указывать на что-то или нет.

Пожалуйста, уточните.

1 Ответ

10 голосов
/ 11 сентября 2009

Вы никогда не передаете объекты в C # - только когда-либо значения типов значений или ссылки. В этом случае вы будете передавать ссылку, когда имеете дело с классом. Ссылка будет иметь одинаковый размер (4 или 8 байт) независимо от содержимого объекта, на который она ссылается (если есть).

В этом случае оба объекта будут иметь одинаковый размер - просто один из них будет иметь нулевую ссылку, а другой - ссылку на коллекцию.

Таким образом, вы можете рассматривать тот, у кого есть коллекция, как "более тяжелый", поскольку в нем задействованы два объекта вместо одного. Очевидно, что дополнительная коллекция будет занимать память - тогда как нулевая ссылка не относится ни к какому объекту, поэтому требуется только размер самой нулевой ссылки.

Для получения дополнительной информации см. Мою статью о типах значений и ссылочных типах и передаче аргументов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...