@Ewoni

Как понять для чего использовать различные инструменты в программировании?

Доброго времени суток! Постараюсь кратко описать суть вопроса. Изучаю C#, понимаю всё то, что изучаю и в принципе получается решать различные задачки. Однако я не понимаю как и в какой ситуации использовать тот или иной инструмент(не знаю как правильно назвать это).

Приведу несколько примеров: я понимаю что такое sctruct, но не понимаю для чего это нужно. Понимаю модификаторы доступа, но не понимаю зачем их так много и какой где использовать. Понимаю что такое static, но не понимаю в какой ситуации применять. И вот как мне понять что, где, для чего и почему использовать. Не понимаю где использовать ref, out и in.

Понимание этого придёт с опытом при создании своих проектов или нужно именно что проанализировать что из себя представляет тот или иной инструмент и прийти к тому в какой ситуации я бы его использовал? Может покопаться в коде опенсорс-проектов каких-нибудь? Просто эта проблема действительно мешает. Начинаю переживать, что мой мозг сочтёт многую информацию, в том числе важную, ненужной ввиду не созданной связи аля "инструмент-применение" и просто выкинет её из головы..

Не знаю, этот вопрос, наверное, нужен для того, чтобы успокоить самого себя увидев какой-нибудь логичный ответ, к которому я бы и сам мог прийти или ещё что-то. В любом случае буду премного благодарен за ответ!
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Не существует правильного варианта использования какого-либо инструмента - он просто имеет определенный функционал, а как его использовать - это уже на твоей совести и воображении.

Например, ref и struct можно объединить для реализации посетителя, который модифицирует посещаемого объекта и т.к. структура на стеке хранится (неправильно так говорить, но тут сойдет), то можно объект сделать struct а после передавать через ref - боксинга не будет. Так, например, реализован JSON десериализатор в System.Text.Json - нигде не пишут что так можно делать, просто нашли способ.

Или можно сделать 2 конструктора - один private без аргументов, а другой public с аргументами и тогда можно использовать EF Core, чтобы этот класс использовать и как объект в БД и как объект бизнес-логики. EF Core сам объект создаст и нужные поля выставит.

Таких вариантов - куча. Как найти их - опыт. Уже сам описал как его получить - пиши свои проекты, изучай проекты других, читай умные книжки/статьи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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