Comments 44
думаю, что большинство из вас хотело бы создавать свои игры на Unity или Godot
Статья это переделанное выступление к первокурсникам?
Шо, опять?!!!
P.S. Гайды вчерашний день. Хорошие, плохие ли, но вчерашний. Кому сейчас надо изучать основы шарпа, если клавдия набросает каркас приложения, да еще с функционалом - только попроси. А до действительно непростых вещей автору еще долго добираться.
Возможно, человек и не думал о C#, встретил эту статью, посмотрел и подумал: какой классный язык, надо бы его заценить.
В этом плане материал полезен :)
Если человек не думал о шарпе, он ему и не нужен. С этими языками почему-то всегда телега поперед лошади. "А я слышал го зашибись язык, давайте на нем проект запилим!"(ц).
Язык - средство/инструмент, проект - цель, и никак иначе. Ну или "кровавый энтерпраиз"(ц) и неподьемное наследие легаси. А читать книжки по шарпу без реального проекта - время на ветер.
Да, мотивации в статье, кажется, не достаточно. Было бы прикольно начать с каких-нибудь примеров со знаковыми фишками языка, например LINQ. "Хотите так же? Давайте разбираться..."
какой классный язык, надо бы его заценить
Вы правы, это я :)
Давно уже хочу начать вместо JS использовать C#. Рантаймом будет, конечно, .NET. Вроде бы у JS и C# общих рантаймов нет, а жаль... вон, в Node.js ввозят поддержку TS, можно было бы и C# через прослойку какую-нибудь...
А ещё нейронки, когда хочешь понять основы - зло. Поддерживать своё костылеводство тоже будет нейросеть? Да как бы не так!
Спасибо за структурированную подачу. Прочитал с интересом. Я -пхпшник по жизни, если че...
Например, новичок хочет показать, что аргументы методы Add не меняются, поэтому добавляет модификатор in:
int Add(in int x, in int y){ return x + y;}В итоге получается упаковка (boxing) типа int в object, что ведет к лишним накладным расходам.
Шта? Значение размещается в стеке, и затем передаётся ссылка на него - это да. Но, блин, БОКСИНГА здесь нет!
Спасибо за замечание, исправлю
о а это кстати тренд ллмок врать про боксинг при возврате значения из функции. это уже 3я статья. в первой было такое сказано про go. а во второй - про rust & go.
Visual Studio 2022
Уже устарел. Есть 2026 с net10
Зачем начинающему показывать Main(), если уже можно не показывать? Чем меньше нагружать грудой слов со старта, тем легче пойдёт. А про Main() и чуть позже можно разжевать.
Это же сколько незнакомых слов со старта: using, System, class, Program, static, void, Main - до которых ещё долго и сразу все не объяснить, не напугав.
Однажды меня попросили научить программированию и я решил, что это отличная идея. Ещё до самого языка пришлось объяснять, что такое консольные приложения и зачем они вообще нужны. Так что программирование начинается не с кода.
А за актуальным гайдом по C# уже много лет всех отправляю сюда от ребят из "Контура".
Всю дорогу в .NET не хватало от мира Джавы (или Питона, или Раста) возможности сделать один файл и запустить его. Теперь можно с dotnet run foo.cs. И я думаю для современного пути C# с file-based app будет проще учить именно язык, а не CLR. Так что как раз сейчас достаточно VS Code или nvim.
В мотивационную часть я бы добавил, что в перспективе, учитывая текущий тренд, C# выйдет за пределы классического компилируемого ЯП и зайдёт в нишу скриптов. Что сильно расширяет проф. горизонт.
Уже сейчас можно просто "выполнить скрипт" dotnet run script.cs - не нужен ни проект, ни среда разработки, только SDK.
А то и просто выполнять команды прямо в консоле (пока правда через установку, например, https://github.com/waf/CSharpRepl ). Классная, кстати, вещь и легко добавляется в терминал для удобного запуска.
На данный момент C# уже во многих аспектах превосходит своих прародителей - Java и Delphi, первого в производительности, а второго в современных средствах разработки
А в чем именно состоят "современные средства разработки" и в чем они превосходят Delphi?
Не претендую на истину в последней инстанции, но объясню свою мотивацию так написать. Delphi много лет не развивается или делает это медленно \ не так заметно. По википедии видим обновление языка в 2013 году. Языки должны развиваться, идти в ногу со временем, как мне кажется. В то же время шарп сделал скачок от клона Java и Windows-only к кроссплатформенности, AOT компиляции, высокой скорости, более низкоуровневым абстракциям и т.д. Ну и рейтинг языков показывает у шарпа 5 место с тенденцией роста. Сам много раз слышал мнение, что шарп стал тем, чем раньше был Delphi.
То что вы привели - ложные сведения. (https://ru.wikipedia.org/wiki/Delphi_(среда_разработки)). Обновляется язык (и среда разработки) регулярно, каждые 3-4 месяца. Последний, на сегодняшний день, релиз был в сентябре 2025 года. А новая версия уже в закрытом бета тесте. В связи с этим ...
Delphi давно является кроссплатформенным языком и, в отличии от C#, позволяет один и тот же проект собрать сразу под все платформы (Win, Linux, MacOS, iOS, Android). В том числе, Web (обычный веб-приложение, PAW или Electron) и RaspbberyPi (через pas2js). На подходе и WebAsm.
Delphi позволяет (и позволял всегда) создавать независимые приложения, не требующие предустановки рантайма в ОС.
В языке так же добавлены и дженерики и атрибуты и енумераторы и инлайн объявление и выведение типов и таски и анонимные функции с захватом переменных и поддержка raw строк, тернарный оператор и другие многие новые языковые конструкции (типа for var in, is not, not in, noreturn). В бете тестируются null safety и nullable-типы.
Так что, я рассчитывал, что будет что-то действительно интересное, задавая подобный вопрос
В таком случае странно, что про язык мало что слышно сейчас.
У @HemulGM была недавно интересная статья с примерами современного Delphi. Что-то про обучение кажется. Справедливости ради, видно, что Delphi очень хочет и старается догнать шарп по богатству синтаксиса. Но, во-первых, силы не равны, с MS сложно бодаться. Во-вторых, второй шарп мало кому нужен. Сам шарп-то позиционировался как джава следующего поколения, особенно, когда .NET стал кроссплатформенным)
Зайдя на статью я изначально ожидал катастрофу, тем не менее почитав, в целом скажу неплохо.
Разве что выбило объяснение типов и литералов до переменных : )
Ну и немного критики по технической части (люблю придраться по мелочам):
-Нет суффикса u для uint и литералов с экспонентой.
-new не означает вызов конструктора, оно означает примерно тоже самое что и в C++: аллоцируй в куче и дай ссылку (упакованную в тип). На самом деле можно вызвать конструктор и без new, через :this()
С new можно объявлять массивы, анонимные типы и вообще new может быть модификатором или ограничением
Редакт: существование структур несколько ломает мою позицию здесь должен признать
-в C# есть >>> unsigned right shift (Ну и плюс unsafe)
-для Nullable<T> хорошо бы упомянуть .Value поле, что бы получить значение без каста, постоянно нужно
-для обработки ошибок хорошо бы упомянуть rethrow
-Структуры данных в C# кличут коллекциями, это не то что бы важно; что важно это почему нет LinkedList, одна из ключевых структур данных прямо по учебнику. (И HashSet тоже, в сравнении очередь практически не используется)
-"Для всех остальных случаев используйте foreach." Но foreach это вызов GetEnumerator(), его конечно хорошо оптимизировали, но... он буквально разворачивается в for цикл в IL.
Хороший пример силы for ещё проход про LinkedList
-DateTime.Now очень плохая идея, хотя бы DateTime.UtcNow, что бы не прострелить ногу часовыми поясами
-в Random очень полезен NextDouble, возвращает 0..1, жалко пропустить.
А про автоматическое закрытие консоли, не, пожалуй упоминать не будем, да? Если пользователь не знаком, пусть гуглит сам или просто забросит сразу, зачем о нём думать... Какие ReadLine() в конце, какие настройки IDE, зачем оно вам, мелькнёт консоль и ок, вы добились результата!
Тем более про установку IDE, зачем человеку который в первый раз видит IDE и знакомится с C# лишняя информация! Это ведь не статья для "начинающих и джунов", хотя, погодите...
Не очень понятно зачем потрачено столько труда, когда УЖЕ есть отличные книги по C#, и если нужно бесплатно, то можно скачать с торрентов
Спасибо, дружище!
Появились необходимость писать скрипты на c# для СКАДА, времени на чтение мануалов нет, твой краткий материал - то, что необходимо. Продолжай, пожалуйста!
Современный C# для начинающих и джунов. Часть 1