|
|
|
Когда использовать ссылочные типы, а когда использовать типы значений?22.07.2018, 22:40. Показов 3065. Ответов 11
0
|
|
| 22.07.2018, 22:40 | |
|
Ответы с готовыми решениями:
11
Когда нужно использовать структуры, когда классы, а когда словарь? Когда следует использовать значимый тип, а когда ссылочный?
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 22.07.2018, 22:53 | ||
|
Если нужна семантика копирования по ссылке, то ссылочные типы. Если не знаете что вам нужно, то используйте классы.
0
|
||
|
|
|
| 23.07.2018, 11:51 [ТС] | |
|
На просторах инета нашел:
В качестве примера мы рассмотрим простой тип Point2D, представляющий координаты точки в ограниченном двумерном пространстве. Каждая из двух координат может быть представлена значением типа short, а весь объект будет занимать четыре байта. Теперь допустим, что требуется сохранить в памяти массив с десятью миллионами точек. Какой объем памяти потребуется для этого? Ответ на этот вопрос в значительной степени зависит от того, является ли тип Point2D ссылочным типом или типом значения. Если это ссылочный тип, массив с десятью миллионами точек будет хранить десять миллионов ссылок. В 32-разрядной системе для хранения десяти миллионов ссылок потребуется почти 40 Мбайт памяти. Сами объекты займут почти такой же объем. Фактически, как будет показано чуть ниже, каждый экземпляр Point2D занимает не менее 12 байт памяти, что в сумме для десяти миллионов точек дает 160 Мбайт памяти! С другой стороны, если Point2D является типом значения, массив с десятью миллионами точек будет хранить десять миллионов точек и ни байтом больше, что в сумме составит 40 Мбайт, то есть в четыре раза меньше, чем для ссылочного типа Добавлено через 33 секунды Выходят когда много объектов лучше использовать структуры да? Добавлено через 20 секунд kolorotur,
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 23.07.2018, 12:08 | ||
Сообщение было отмечено aleksskay4 как решение
РешениеК тому же объяснение, которое вы нашли, хоть и технически верно, на деле не может и не должно являться главной причиной выбора между значимыми и ссылочными типами. Если, конечно, нет конкретной проблемы, которая устраняется сменой класса на структуру. Банально потому, что существует такая вещь как запаковка, при которой значимый тип превращается в ссылочный. Используйте значимые типы если вам нужна семантика копирования по значению или имеется серьезная проблема с производительностью, которая измеряемо устраняется заменой ссылочного типа на значимый. В остальных случаях используйте классы (ссылочные типы).
1
|
||
|
|
|
| 23.07.2018, 12:15 [ТС] | |
|
используйте типы значений, если объекты достаточно малы и предполагается, что в программе будет создаваться большое их количество;
Добавлено через 26 секунд тоже нашел
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||
| 23.07.2018, 12:24 | ||
|
2
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 23.07.2018, 12:26 | ||
|
Вопросы производительности — очень, очень специфичные и вссегда рассматриваются индивидуально. Если вам нужно общее правило, то оно выше — семантика копирования.
1
|
||
|
|
|
| 23.07.2018, 14:15 [ТС] | |
|
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|||||||
| 23.07.2018, 14:17 | |||||||
1
|
|||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 23.07.2018, 14:17 | |
|
0
|
|
|
|
|
| 23.07.2018, 14:43 [ТС] | |
|
аа обычно слышал упаковка, понятно.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 23.07.2018, 15:03 | ||
|
По-басурмански — boxing/unboxing
0
|
||
| 23.07.2018, 15:03 | |
|
Помогаю со студенческими работами здесь
12
Типы значения и ссылочные типы
(MCS-51) Когда нужно использовать команду add а когда addc при суммировании? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|