Задать вопрос
@kofon
Я человек

Нужно ли использовать структуры в C#?

Допустим у меня летят данные из базы данных
1) Id
2) Name

Задача. Сохранить эти данные где-нибудь...

Итог. Сохранять буду в листе.
Вопрос: лучше создать класс или структуру.

Структура быстрее, но если всё равно данные будут сохраняться в листе, то есть ли смысл. Получу ли я % производительности от этого?
  • Вопрос задан
  • 7924 просмотра
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вы должны получить не процент (именно незначительный прирост если он вообще будет, в чем я лично сомневаюсь) от производительности а удобства при разработке и поддержке приложения.
Ответ написан
@Sumor
Используйте классы, если вы не видите преимуществ использования структур в вашем коде.
Не уверен, что использование структуры со строкой внутри в листе быстрее использования аналогичного класса. Особенно по сравнению со временем доступа к СУБД.
Подробнее про структуры в MSDN
Структуры можно использовать:
1. Если у вас связь с неуправляемым кодом, где ожидается подобная структура.
2. Если вам критично использование value-типов.
При этом нужно не забывать об особенностях их использования, например, что при присваивании или передачи в функцию структура копируется. Наверняка можно написать пример, где из-за этого производительность работы с большой структурой будет ниже, чем с классом.
Ответ написан
Комментировать
@Oxoron
Шарпер
Не факт, что получите прирост производительности. Многое зависит от операций над листом. У структур по умолчанию медленное сравнение (привет рефлексии), например. Если вам придется много перемещать ваши объекты, тоже преимущество за классами (привет ссылочным типам).
Информация к размышлению: при работе с LINQ часто используются анонимные типы; они как раз наследуют от class.
И вдогонку, есть правило: никогда не используйте структуры, если четко не знаете, зачем оно вам надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы