Обновить

Комментарии 12

Забыты в теме классов первичные(основные) и частичные конструкторы, обязательные поля, расширения классов.

По сути, каждое значение здесь лишь константа целочисленного типа. Но за счет объединения в общее перечисление PlayerColors, мы можем гарантировать, что, например, метод можно будет вызвать только одним из допустимых значений.

    PlayerColors pc = (PlayerColors) 42;
    GameManager.InitPlayer("test", pc);

Да, про это тоже нужно уточнить, спасибо

А ещё добавить к классам и структурам records.

Свойства есть синтаксический сахар, компилятор заменит их get/set методами.

Я помню, когда начинал C# лет 15 назад, как сложно было понять, что такое классы, конструкторы и все вот это. Главная проблема непонимания была в том, что все объяснения были написаны теми, кто уже слишком хорошо всё это знает, и практически все тексты были написаны без понимания, что именно непонятно новичку. Фактически, подавляющее большинство таких текстов написано так, что они излагают понимание автором темы для рецензирования этого понимания другими понимающими, а не для того, чтобы объяснить что-то новое непонимающим. Мне кажется, ваш текст именно такой. К счастью, сейчас есть ChatGPT, который, в отличие от людей, умеет абстрагироваться от уровня своего понимания.

Я, в свое время, где-то вычитал или мне кто-то сказал очень простой и примитивный способ понимания концепции классов: опиши предметную область, существительные - это классы, глаголы - это методы, прилагательные - это свойства.

Типа - "Грызть зеленое яблоко" - здесь "яблоко" - класс, "грызть" - метод, "зеленое" - свойство.

Для начала этого хватило для декомпозиции, полиморфизм, абстрагирование и наследование уже потом как-то сами пришли.

Неужели это помогло что-то понять? Я помню, что именно так обычно в учебниках рассказывали про классы, и это было совершенно непонятно. Вот я впервые открыл Visual Studio, мигает курсор, и тут мне начинают рассказывать про зеленые яблоки. Мне хотелось крикнуть "Эй, аллё! Вы вообще понимаете, что происходит?")))

Лет 15 назад в вузах был с++, поэтому когда человек начинал c#, предполагалось, что он знает плюсы :-)

Идеального решения тут, к сожалению, нет

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации