Комментарии 12
Забыты в теме классов первичные(основные) и частичные конструкторы, обязательные поля, расширения классов.
По сути, каждое значение здесь лишь константа целочисленного типа. Но за счет объединения в общее перечисление PlayerColors, мы можем гарантировать, что, например, метод можно будет вызвать только одним из допустимых значений.
PlayerColors pc = (PlayerColors) 42;
GameManager.InitPlayer("test", pc);А ещё добавить к классам и структурам records.
Свойства есть синтаксический сахар, компилятор заменит их get/set методами.
Я помню, когда начинал C# лет 15 назад, как сложно было понять, что такое классы, конструкторы и все вот это. Главная проблема непонимания была в том, что все объяснения были написаны теми, кто уже слишком хорошо всё это знает, и практически все тексты были написаны без понимания, что именно непонятно новичку. Фактически, подавляющее большинство таких текстов написано так, что они излагают понимание автором темы для рецензирования этого понимания другими понимающими, а не для того, чтобы объяснить что-то новое непонимающим. Мне кажется, ваш текст именно такой. К счастью, сейчас есть ChatGPT, который, в отличие от людей, умеет абстрагироваться от уровня своего понимания.
Я, в свое время, где-то вычитал или мне кто-то сказал очень простой и примитивный способ понимания концепции классов: опиши предметную область, существительные - это классы, глаголы - это методы, прилагательные - это свойства.
Типа - "Грызть зеленое яблоко" - здесь "яблоко" - класс, "грызть" - метод, "зеленое" - свойство.
Для начала этого хватило для декомпозиции, полиморфизм, абстрагирование и наследование уже потом как-то сами пришли.
Неужели это помогло что-то понять? Я помню, что именно так обычно в учебниках рассказывали про классы, и это было совершенно непонятно. Вот я впервые открыл Visual Studio, мигает курсор, и тут мне начинают рассказывать про зеленые яблоки. Мне хотелось крикнуть "Эй, аллё! Вы вообще понимаете, что происходит?")))
Лет 15 назад в вузах был с++, поэтому когда человек начинал c#, предполагалось, что он знает плюсы :-)
Идеального решения тут, к сожалению, нет

Современный C# для начинающих и джунов. Часть 2. ООП и не только