C#. Быстрый старт. Основы языка C# на примере разработки небольшой игры


Содержание

Основы языка Си шарп

Если вы установили среду программирования Visual Studio, то можете перейти к практическому изучения основ языка C#.

Содержание раздела:

Рекомендуется каждый пример запускать и проверять в среде Visual Studio, набирая для практики тексты вручную (конечно, можно и копировать код примеров с сайта), после чего полезно перейти к подразделу Примеры решения задач к разделу «Основы языка Си шарп».

Теория и примеры работы с классами начинаются с раздела Классы: объекты, структуры, массивы, строки … .

4 мыслей о “Основы языка Си шарп”

После изучения раздела и запуска всех примеров смог вникнуть в язык C#, спасибо

Рад. Давай двигаться дальше.

Вячеслав Александрович!
Очень понравился мне Ваш стиль изложения (сразу чувствуется опыт работы с учащимися), Способ донесения — именно небольшими порциями, доступными для понимания.
Однако возникли технические трудности в понимании последовательности, что за чем следует, так сказать теряется путеводная нить, ввиду отсутствия четкой нумерации разделов и тем.
Заблудился я короче там. Предлагаю применить жесткую систему с числовой нумерацией разделов и тем, что, по моему мнению, устранит путаницу.
P.S. Еще раз выражаю Вам свое глубокое уважение.
Несомненно сайт очень полезный хотя бы ввиду того. что намного современнее множества других, а ведь интерфейс среды разработки сильно изменился например по сравнению с учебниками 10 летней давности. Не удалось мне, например, получить знания от несомненно хорошей книги http://www.frolov-lib.ru/books/msnet/c_sharp2/index.html г. Фролова, поскольку совершенно изменился интерфейс среды разработки. Не там оно в меню и сами меню другие.

Богдан Николаевич!
Большое спасибо за комментарий и замечания.. Конечно, за
плодовитостью г.г. Фроловых мне не угнаться, они еще с 90-х годов
писали свои книги-справочники обо всем (часто просто путем перевода с
иностранных книг). Но Вы правильно уловили мой подход к обучению.

Что касается строго последовательной структуры изложения, то она, на
мой взгляд, присутствует в содержании, кроме того, обычно есть гиперссылки на предыдущие и последующие статьи. Связность текста и правильность ссылок с учетом Ваших замечаний сейчас как раз и проверяю, спасибо.

Преимущества и недостатки C# — Учим Шарп #1

Опубликовано shwan в 06.11.2020

Я хочу обсудить с тобой один очень важный вопрос, который достаточно часто упускают из внимания: действительно ли тебе нужно учить язык C#?

Что бы тебе ни рассказывали на всевозможных онлайн курсах, книгах, тренингах и конференциях, о том, как можно стать программистом за 21 день – все это ложь, п*дежь и провокация.

Программирование – это достаточно сложная техническая наука, требующая глубоких знаний информатики, математики, физики, а также синтаксиса нескольких языков программирования и целой кучи предметных областей, в которых тебе придется работать. Поэтому, если ты действительно серьезно решил стать настоящим программистом (а не обезьянкой, пишущей код), то приготовься к постоянному изучению чего-то нового, изнуряющему процессу отладки и поиска багов, а также чтению мануалов (в большинстве своем англоязычных).

Поэтому, я предлагаю тебе предварительно рассмотреть основные преимущества и недостатки языка C#, перспективы развития, сферы применения и уровни зарплатных ожиданий. Это может помочь тебе понять действительно ли ты правильно инвестируешь свое время. А время – это самый ценный ресурс, запомни это.

История языка C#

Я постараюсь долго не задерживаться на этом пункте, но основную информацию расскажу.

Данный язык создан всеми так горячо любимой корпорацией Зла Microsoft в 2000 году. Он очень многое унаследовал от своих родителей (С++ и Java), но и привнес нового.

Возможной версией использования символа хештега принято считать наследование плюсиков от предков, примерно следующим образом: C → C++ → C++++(C#), потому что символ «#» при хорошем воображении можно получить путем объединения 4-х знаков «+».

Язык активно развивается. Регулярно выходят новые версии C#, которые добавляют новые синтаксические конструкции в язык, а также увеличивают его быстродействие и надежность.

Преимущества C#

Данный язык использует объектно-ориентированный подход к программированию во всем. Это означает, что тебе нужно будет описывать абстрактные конструкции на основе предметной области, а потом реализовывать между ними взаимодействие. Данный подход пользуется большой популярностью, потому что позволяет не держать в голове всю информацию, а работать по принципу черного ящика: подал входные данные -> МАГИЯ -> PROFIT.

Также в языке присутствует обилие синтаксического сахара, который делает тяжелую жизнь программиста капельку слаще. Вместо того, чтобы писать 100500 строк кода, ты просто используешь готовую конструкцию, а компилятор сделает за тебя всю грязную работу. Но некоторые такие конструкции являются не самыми оптимальными с точки зрения производительности. Но все это перекрывается за счет удобочитаемости кода и высокой скоростью разработки.

Еще стоит упомянуть, что все это работает на базе платформы .NET Framework. Что это означает? Для многих непосвященных, это просто какая-то приблуда, которую нужно установить на комп, чтобы программа запустилась, но дело обстоит значительно глубже. Написанный тобой код на языке C# транслируется в промежуточный язык (IL), который в свою очередь уже преобразуется в машинный код на твоем компьютере прямо во время выполнения приложения (JIT). Спрашивается, зачем это все? А суть в том, что ты можешь пилить со своим другом Васей на разных языках один и тот же проект и ни одному из вас не придется переучиваться. Но я никогда не видел, чтобы это реально использовали на практике. Но это еще не все. Так как окончательная компиляция из промежуточного кода выполняется в живую на твоей конкретной машине, то возможно увеличение производительности за счет использования специфических команд именно твоего процессора.

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

Ты просто скачиваешь нужное тебе решение из nuget и начинаешь его использовать. В большинстве своем они бесплатны. Сюда же можно отнести большое количество обучающего и справочного материала. Практически на любой свой вопрос ты сможешь найти ответ на стековерфлоу. Ну а на крайний случай всегда можешь спросить в моем телеграм чате для программистов.

Немаловажно наличие хороших инструментов разработки, и здесь все очень хорошо. Абсолютное большинство разработчиков используют интегрированную среду разработки Visual Studio, которая предоставляет over9000 возможностей, использовать которые ты конечно же не будешь.

Но IDE действительно хороша, к тому же имеется ее полнофункциональная бесплатная версия Community.

Еще к плюсам можно отнести строгую типизацию, которая позволяет защититься от дурака, и не так давно появившаяся кросспратформенность в .NET Core (да-да, мелкомягкие потихоньку захватывают линукс).

Недостатки C#

Из-за обилия синтаксического сахара появляется большое количество быдлокодеров, которые будут с завидным постоянноством стрелять себе в колено. К тому же некоторые, казалось бы, общепринятые синтаксические конструкции начинают себя вести совершенно неадекватно при определенных обстоятельствах.

C# очень легко дизассемблируется. Это означает, что с большой долей вероятности твой код будет получен и изучен конкурентами. Конечно же, есть специальные инструменты, которые могут усложнить этот процесс, но на 100% защититься от этого практически невозможно.

.NET использует концепцию JIT-компиляции. Это означает, что программа будет скомпилирована в машинные коды по мере необходимости прямо во время работы приложения. С одной стороны, это конечно прикольно, но при первом запуске возможны весьма серьезные тормоза.

C# не является повсеместно распространенным языком. Большинство программистов сосредоточены в коммерческой Enterprise сфере, что накладывает весьма серьезные ограничения на поиск работы в небольших городах, где кроме Delphi или PHP ничего жизни не видели. К тому же, как бы то ни было, C# в первую очередь ассоциируется с Windows. Вряд ли в обозримом будущем что-то изменится и Винда все также будет продолжать доминировать на рынке, но все же небольшой риск остается, особенно учитывая недавние фейлы с обновлениями в Windows 10.

Перспективы развития C#

C# входит в первую пятерку самых популярных языков программирования на 2020 год. Он используется во многих крупных компаниях, а также и в небольших стартапах. Сейчас компания Microsoft делает большой упор на развитие универсальности и кросспалтформенности для этого языка. Уже сейчас с его помощью можно разрабатывать практически любой тип приложений.

Компания Microsoft остается одной из крупнейших IT компаний мира, а C# ее флагманский язык программирования, который постоянно развивается и впитывает в себя все новые возможности. Поэтому в обозримом будущем проблем у данного языка возникнуть не должно.

Сферы применения языка C#

В этой области C#, наверное, впереди планеты всей. Хочешь разрабатывать обычные приложения для компьютера – пожалуйста, стандартные WinForms Application и консоль тебе в помощь. Хочешь такие же, но покрасивее? – используй WPF. И специальные приложения для магазина в Windows Store тоже. Веб-приложения? – Легко ASP.NET всегда придет на помощь. На Linux? – тоже не вопрос, .NET Core уже здесь. Мобильное приложение? – Xamarin сделает сразу под все платформы. Хочешь написать игру? – движок Unity показывает себя очень даже неплохо, и при этом также адаптирует игру под различные платформы. Хочешь приблизить апокалипсис с восстанием машин и создаешь искусственный интеллект? – есть целая платформа с кучей инструментов для этого Microsoft AI Platform. Также и для компьютерного зрения и ботов. Я вообще с трудом могу придумать пример того, что невозможно реализовать на C#. Я где-то встречал даже операционную систему написанную на шарпе. Поэтому в этой области все хорошо.

Зарплаты разработчиков C#

Здесь все в целом неплохо. По данным на 2020 год, C# явно не является самым высокооплачиваемым языком, но и не самый низкооплачиваемый тоже. Среднее значение зарплаты для данного языка в России около 90к рублей. Это весьма неплохой результат, но бесспорно есть и более дорогие языки. В целом, уровень заработной платы намного больше зависит от прямоты рук и уровня знаний, поэтому не так важно на каком языке писать, главное делать это хорошо. Но данная цифра задает примерный уровень для Middle разработчика в среднем по России. От этого уже можно отталкиваться.

Итоги

C# это объектно-ориентированный язык с большим количеством синтаксического сахара, что позволяет экономить время и силы. Он используется во многих крупны организациях, стартапах, а также начинающими. Имеется удобная и бесплатная среда разработки. Достаточно прост в освоении на базовом уровне, но содержит вагон и маленькую тележку скрытых особенностей, чтобы разобраться в которых потребуется много времени. Позволяет разрабатывать универсальные мобильные приложения и игры, но используется для этого достаточно редко.

В целом это перспективный язык, достаточно простой для освоения начинающим. Но следует помнить, что существует множество альтернатив, которые лучше подходят под некоторые задачи. Например, могу порекомендовать языки C++, Java, Python.

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

Основная идея C# — это универсальность. Ты можешь реализовать все на одном языке и для любой платформы, но с большой долей вероятности это будет работать медленнее, чем разработанное специально под конкретную платформу.

Он неплохо подходит как для начинающих в качестве первого языка, так и для реализации крупных коммерческих проектов.

На этом мы заканчиваем наш первый урок. Подписывайтесь на мои социальные сети: Вконтакте, Телеграм, YouTube и Дзен. Ну а еще есть специальный закрытый чат, для изучающих C# по моему курсу. С вами был Вадим. Пока!

Цукерберг рекомендует:  Первые шаги Bootstrap

Dmitriy Azarov

В цикле статей «Разработка игры на C# (Mini RPG) мы реализуем полноценную пошаговую игру на C#. Вся логика будет написана на C#, а в качестве интерфейса будем использовать консоль. Для начала составим план разработки.

По хорошему пункты 4 и 3 нужно поменять, но т. к. мы захотим (а мы захотим) менять требования решено делать в таком порядке.

Для начала подумаем, что мы хотим получить от этой игры. Определимся с тем, что это будет пошаговая Role Playing Game. Большинство современных игр RPG предоставляют своим пользователям различные классы персонажей, деревья умений и др. Мы начнем с одного класса персонажа. NPC вводить не будем (это не влияет на общую архитектуру игры и упростит разработку). Также не будем реализовывать игровой мир, но в разработанной системе это сделать будет не сложно. А в качестве бонуса реализуем бота! Бот должен будет подсказывать игроку, какой ход он думает оптимальный. Опишем некоторые правила и информацию об игре.

Игрок

  1. Здоровье
  2. Максимальное здоровье
  3. Сила
  4. Монеты
  5. Предметы

Возможные действия

  1. Сразиться с монстром
  2. Покупка оружия
  3. Покупка брони
  4. Лечение

Попробуем разделить логику игры от логики представления. С оговоркой, что это не клиент серверное приложение и для упрощения некоторых моментов сознательно упрощаем реализацию. С характеристиками персонажа и возможными действиям разобрались, приступим к проектированию архитектуры. Общая архитектура сборок будет следующей:

Разделим логику на: представление и движок. Сборка для конфигурации игры вынесена отдельно. В следующей части мы рассмотрим разработку сборки GameConfig, как единственной сборки без зависимостей (да и одну из первых сборок в игре). В ней находятся модели настроек игры и некоторые адаптеры.

Небольшой спойлер, как будет выглядеть игра в конце:

Если у вас после прочтения и изучения исходного кода появились вопросы или комментарии буду очень признателен.

Примеры программ на языке C#

Здесь, со временем, будет много примеров программ на языке программирования C#…

Лабиринт 1.0

Всем привет, сегодня немного поиграем, я такой лабиринт делал когда то для жены, только он был побольше, я спрятал от нее подарок, а место его нахождения записал на финише. Весь прикол в том, что как только курсор касается стенки лабиринта его перекидывает в начальную точку. В общем, погнали! Вот проект для тех кому лень читать: […]

Делаем крутой парсер HTML страниц и парсим пару сайтов

Всем привет, На просторах интернета я обнаружил один интересный парсер, я добавил описание и немного доработав решил презентовать вам. Проект объемный поэтому запаситесь терпением. Лень читать статью вот готовый проект: Поехали, 1) Создаем проект WinForm, назовем его «SuperParser». 2) Сразу заходим в свойства формы и меняем св-ву Text значение на «SuperParser», size выставляем width 800 […]

Пример работы С#+Json

Всем привет, не давно меня попросили настроить интеграцию с внешним сервисом, я приступил к работе и после подумал, возможно кому то может пригодиться такой функционал, т.к. по большей части все взаимодействия между системами не находящимися в одном домене или просто закрытые по соглашению с вендером, они частенько так делают, в договоре это обычно прописано. Но […]

Делаем «однорукого бандита».

Всем привет, сегодня мы будем делать игровой автомат. Суть, у нас будет форма с 3 барабанами, каждый барабан будет содержать только цифры от 0 до 9. Игроку при старте игры будет даваться стартовые $100, он может делать ставки 5-10-15 и т.д до $50, после нажатия рычага, у игрока 5 попыток, выигрыш зависит от количества совпадений […]

Игра «Печатная машинка» на С#

Всем привет, сегодня мы напишем игрушку, суть следующая: В форме будут появляться случайные буквы. Если игрок вводит буквы правильно, они исчезают — уровень растет и буквы появляются все чаще. Если вся форма заполнена буквами игра окончена. Кому лень читать(ниже), могут сразу скачать проект Итак, начнем… 20+

Графическая «доска» на C# за 10 минут.

Всем привет, сегодня мы сделаем простую графическую программу. Кому лень читать (ниже) могут скачайте готовый проект Поехали. 1) Создаем WinForms проект, обзываем его «WinFormsApp_Paint» 2) Меняем для формы значение св-ва Text = «MyPaint» 3) Кидаем на форму 3 элемента Label, 1 элемент NumericUpDown, 1 кнопку. 4) Для label1 св-во Text = «Выбрать цвет». Расположить в […]

Создаем элемент управления для панели элементов(Toolbox) Visual Studio

Всем привет, Сегодня мы будем делать элемент управления(Control) для масштабирования изображений, мне на текущий момент известно 2 способа, один из них мы сегодня используем. Кому лень читать (ниже) могут скачайте готовый проект Поехали. 1) Создаем проект WinForm, называем его WinFormsApp_UserControls 2) Теперь добавляем элемент UserControl. 3) У нас открывается UserControl1.cs[Конструктор], переходим в свойства этого объекта, […]

Программа для просмотра изображений на C#

Всем привет, Сегодня сделаем софтину для просмотра картинок и гифок, программка будет короткой, но рабочей). Кому лень читать(ниже), могут сразу скачать готовый проект Поехали, 1) Cоздаем проект WinForms, даем название проекту WinFormsApp_ViewPicture 2) Свойству Text присваиваем значение «View Picture». 3) Кидаем на форму элемент PictureBox растягиваем его по краям, но оставляем снизу место для кнопки. […]

Делаем простой редактор txt

Всем привет, Сегодня мы будем делать редактор текстовых файлов, который будет уметь открывать уже существующие файлы и создать новые txt-файлы. Кому читать дальше лень, могут скачать готовый проект Поехали! 1)Создаем WinForms проект называем его, например, WinFormsApp_SimpleTextEditor 2) Кидаем на форму textBox и 2 кнопки, св-во name 1 кнопки = buttonOpen, 2-ой кнопки name = buttonSave. […]

Работает с картами в WinForms без использования JS! или Библиотека GMAP.net

Всем привет, Не давно был на одном из совещаний и там, один бизнес-аналитик показал, так называемую «тепловую» карту, на карту Москвы он вывел все торговые точки наших клиентов, в итоге можно было визуально оценить какие зоны у нас сильно загружены, средне и слабо. Однако, сделал он это с использованием JS+браузер. НО у меня с JS […]

Безумно короткий самоучитель по C#. Часть 1 из 2.

  • Без разжевывания
  • Поверхностный
  • Не полный

Если хотите — жуйте подробности в комменты, задавайте вопросы где «совсем не понятно».
Материал чутка связан, потому если вы встретили в коде что-то непонятное — читайте дальше, наверняка будет ответ.
Прошу прощения за очень грубое и поверхностное объяснение. На самом деле именно в нем и есть соль, что знания можно «подхватить». А как вы с ними будете работать дальше другой вопрос. Так же как и возможные конструкции — не все.

Пусть это будет пособие для студентов ПТУ, которые вчера жевали семки, а сегодня решившие МНЕ СРОЧНО НУЖНО ОСВОИТЬ ЯЗЫК ПРОГРАММИРОВАНИЯ. Короче таких как я :D

C#, это не паскаль, там главное — типы.
Типы очень грубо делятся на:

  • типы значений (структуры, struct)
  • ссылочные типы (классы, class)
  • интерфейсы (interface)
  • перечисления (enum, но под капотом они сводятся к struct)

Есть несколько базовых типов. Самые часто юзаемые это:

  • int (целое число) //Пример 0, 10, 10i
  • float (дробное число) //Пример 0.1, .1f, 10f
  • char (символ) //Пример ‘a’, ‘b’, ‘c’
  • string (строка, массив символов) //Пример «строка», @»другая строка»
  • bool (true/false, да/нет, переключатель) //Пример true, false
  • byte (байт, по сути тоже целое число, но с маленьким диапозоном)
  • double (дробное число поточнее)
  • object (общий тип)

Свои же типы состоят из вот этих базовых и других созданных типов:

Чем типы значений отличаются от ссылочных типов?
В первом случае (типы значений) идет сравнение объектов по содержимому.
То есть из примера выше — два яблока будут равны, если их цвет и вес совпадет.
Во втором случае (ссылочные типы) идет сравнение по ссылке.
То есть два яблока будут равны только если это одно и тоже яблоко, независимо от того, совпадает их содержимое или нет.

Инкапсуляция

Инкапсуляция обеспечивает уровень доступа какой-то сущности (типа, метода, поля, свойства) и выражается одним из четырех ключевых слов.

  • public (обшедоступно)
  • private (можно использовать только внутри класса)
  • internal (можно использовать только внутри текущей сборки/библиотеки)
  • protected (можно использовать только внутри класса или в классе-наследнике)
  • protected internal (можно использовать внутри текущей сборки/библиотеки хоть где, а вне сборки только для классов-наследников)

Эти слова пишутся соответственно перед инициализацией всех классов/полей/методов
То есть:

Если ключевое слово у поля отсутствует, то оно по умолчанию считается за private.

Наследование

Наследование помогает не переписывать общие данные внутри классов 20 раз.
Пишется через двоеточие после названия класса (указываются классы/интерфейсы).

На самом деле интерфейсы это контракт, и они не наследуются в классах, а реализуются, это допущение, т.к. с точки зрения синтаксиса это очень похожие вещи.

В этом случае и яблоки и томат будут иметь общие поля фруктов — цвет и вес.
Класс может пронаследоваться максимум от одного другого класса.
Любой тип, в том числе класс может реализовывать любое количество интерфейсов.

Полиморфизм

Полиморфизм это свойство объекта представляться любым из пронаследованных типов.
Например из примера выше мы можем описать поля так:

Метод

Метод, функция, процедура — почти синонимы.

Процедура — метод, который ничего не возвращает.
Функция — метод, который что-то возвращает.
Метод — функция/процедура.
В сути же своей в разговорной речи как вы не называйте это — все вас прекрасно поймут. В данной статье я возможно даже пару раз перепутал эти понятия.

В методах вы можете писать специфичный для вашего объекта код.
Например:

Там где указан ‘void’ подставляется возвращаемый тип. Если функция просто выполняется и не должна отдавать никакое значение, ставится void
Пример функции возвращающей значение:

‘return’ возвращает значение переменной.
После выполнения ‘return’ функция обрывается, код при срабатывание ‘return’ не выполняется дальше.
В круглых скобках указываются параметры. Например:

Слово this позволяет обратиться к полям экземпляра, когда в самой функции уже есть переменные с таким названием.

Конструктор и деструктор

Для создания объекта вы можете использовать специальный метод — конструктор, а при очистке срабатывает метод деструктор
Конструктор не указывает возвращаемый тип — тупо пишется название типа, а затем параметры.

Такой тип можно создать c помощью ключевого слова new в любом методе

Если у класса не указаны конструкторы то считается что у него есть пустой конструктор без параметров. Такой класс можно создать вот так:

Деструктор выполняется когда объект уничтожается. Объект уничтожается автоматически если нигде не используется и не хранится.

Инициализация

Помимо использования конструктора вы можете указать для полей значения по умолчанию прямо после объявления.

Свойства

Свойство это гибрид поля и метода. Он нужен когда при присвоении значения или его возврате нужно выполнить какие-то дополнительные операции. Так же хорошим тоном считается помечать как поля кешируемые переменные.
По сути свойства это синтаксический сахар — можно обойтись без них, но они удобные.
Развернутый вид выглядит например вот так:

Ключевое слово value позволяет присвоить значение.
Данный пример показывает как свойство «вес» можно узнать откуда угодно, но изменить только внутри класса.
Функция set может отсутствовать вовсе:

Помимо развернутой конструкции есть «свернутый вариант»:

В свернутом варианте мы не можем указать доп код и использовать поле само по себе, но он удобен когда нам просто нужно изменить уровень доступа.

Статичность

Бывает случаи когда какая-то часть класса относится не к одному объекту, а ко всем сразу.
Такие сущности помечаются словом static

Такие сущности существуют не на уровне экземпляра, а на уровне класса.

Вы так же можете помечать классы как статичные. В этом случае внутри смогут быть только статичные поля и функции, а сам класс нельзя будет создать.
Для сравнения
Доступ к полю экземпляра «цвет»:

Выбор игрового движка и языка программирования для разработки своих игр

Java. Современные и неплохой язык, который живет и процветает. Раньше,на нем писались ява игрушки для твоих любимых Siemens и Sony-Ericsson (у меня, кстати, был k750i). Идеально подходит для мобильных игр, а так же очень неплохо подходит для игр на ПК. Для примера, используется в игре — Minecraft. Могу посоветовать jMonkey Engine и LibGDX, как движки для создания игр на яве, будь это 2D игры на смартфоны или 3D игры в браузере.

Objective-C. Любишь яблока? Дело в том, что язык был создан и используется в основном для продукции Apple. Так что, если хочешь писать любые игры и приложения исключительно для яблока — тогда давай малыш, дерзай. Но хотя смысла нет, потому Apple создали новый язык под название Swift, который должен стать заменой этому языку, да и вообще стать типо крытым и новым языком программирования. Пока он в развитии и неизвестно, что с него выйдет.

JavaScript. Не путай с Java. Серьезно, а то за такое программисты тебе мышку в зад засунут. Это их бесит так же само, как когда им говорят «ты ж программист». JavaScript используется в основном для постройки веб приложений и динамичных сайтов, но в связке с другими инструментами например как Node Js + html5, можно создать неплохую браузерную онлайн игру, аля Agario. Так же используется в движке Unity, на котором можно создать любую 2D или 3D игру для любой платформы, будто телефоны или даже телевизоры

Цукерберг рекомендует:  Азбука виртуального хостинга. Размещаем сайты на TimeWeb

Pascal. *Похоронный марш*

C#. Современный и мощный язык компании Майкрософт, широко используется в мире, поддерживается многими игровыми движками. Официально работает только с Windows, но игровые движки и дополнения могут Легко снять этот головняк, как рассол утреннее похмелье. Можно создать практически любую игру, любого жанра и для любой платформы (наверное даже для калькулятора). Используется в основном для того же движка Unity, который является быстрорастущим и популярным игровым движком в мире.

C++. Кароче, на нем можно сделать все что хочешь и для чего угодно. Абсолютно. Поддерживает многими игровыми движками. Не заморачивайся с ограничениями, хотя может жестко трахнуть твой мозг. На нем кстати Windows написан. Но хрен его знает, он может через пару лет отойти на задний план и быть вытеснен теми же C# и Java, ибо язык довольно таки старый. Но если ты хочешь написать очень красивую игру, к тому же 3D, как BT, Готика или GTA, то под C++ используются такие гиганты движки как CryEngine, Unrial Engine и FrostByte.

PHP. Толковый игры ты на нем не сделаешь, даже приятный 2D платформер. Уж прости. Он Используется для построения веб сайтов и общения клиента с сервером, но в основном в связке с JavaScript и HTML.

Python. Не так популярный как тот же C#, Java или JavaScript, и не так много русской литературы для игр, но он может многое. Простой, шустрый, красивый и современный. На нем очень быстро писать код, можно сделать тот же сайт или программу, что есть его особенностью, но не особо предназначен для игр. Для пайтона (или питона, кто как говорит), могу посоветовать Cocos2d. Кроссплатформенные 2D игры он все же сумеет создать.

Ruby. Нуууу. В принципе, можно написать игру. Хоть веб игру, телефона или ПК. Он правда не так сильно развит в этом, и ты не особо много уроков найдешь об этом, как, например, о том же C# или Java, но этот язык вроде как набирает свои обороты.

Как видишь, у каждого языка или игрового движка есть свои цели. Ей Богу, если ты ща задашь тупой вопрос типа: «а создаст ли например ваш Unity для меня красивую РПГ?«

Фак, просто загугли примеры игр любого интересующего движка и сравни со своими интересами.

От себя могу посоветовать Java, потому что, он как будто рожден для этого игр. Или, так же, могу посоветовать C#, ибо очень популярный язык и много игровых движков его поддерживает. Но это лишь мое мнение.

С тобой по-прежнему был — Флатинго (Flatingo). Если тебе так же интересна разработка игр, то можешь иногда посещать мой YouTube канал. Не забывай говорить будь здоров, после того как чихнул. Удачи, игродел.

1.2 Основы синтаксиса языка C#

Теперь мы кратко рассмотрим синтаксис C#, после чего перейдем к созданию собственных оконных приложений и изучим методы работы с элементами окон, которые в несколько раз проще, удобнее и быстрее, чем разработка под MFC или чистый Win32 API. Как мы уже отметили, синтаксис языка C# крайне похож на С++. Не будем отказываться от традиций и создадим наше первое приложение – Hello World.

Для этого откройте редактор MS Visual Studio (все примеры будут проходить на MS Visual Studio 2008 SP1 с русскоязычным интерфейсом, который более понятен для начинающих программистов), хотя мы и рекомендуем использовать английскую версию.

Во избежание копирования готового кода непосредственно в программу все исходные коды будут отображаться на изображениях. Заполнение кода в Visual Studio стало крайне удобным, благодаря отлично реализованной системы подсказок, поэтому набор кода не должен стать проблемой. Запустите MS Visual Studio, после чего создайте новый проект, используя меню Файл, как показано на рисунке 1.

Файл -> Создать -> Проект
Рисунок 1. Создание нового проекта.
Выберите проекты Visual C#, в шаблонах отметьте Консольное приложение и введите имя для нашего проекта: Hello World.

По умолчанию все проекты сохраняются в папке «Мои документы» текущего пользователя Visual Studio 2008 Projects.
Рисунок 2. Выбор типа проекта.
В открывшемся окне редактора будет код шаблона простейшего приложения .NET на языке C#.�

В него нам необходимо добавить 2 строки кода: первая будет выводить на экран сообщение “Hello World”, вторая будет ожидать строку, введенную пользователем, после которой программа завершится. Ожидание ввода нам необходимо, чтобы успеть прочитать вывод строки программой, иначе мы просто не успеем его увидеть – программа выполнит код и завершится.

После того как вы набрали данный код, достаточно нажать F5 и подтвердить необходимость компиляции. Программа будет запущена, после чего вы сможете увидеть результат ее работы (рис. 3).
Рисунок 3. Программа вывела строку и ожидает ввода от пользователя.
Теперь более подробно коснемся синтаксиса С#. Объектно-ориентрованным языкам свойственно иметь две большие категории типов: типы которые присущи языку («базовые типы») и классы, которые программист может создать самостоятельно.

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

РАЗМЕРНЫЕ ТИПЫ и ССЫЛОЧНЫЕ ТИПЫ

Размерные типы содержат реальные данные и, следовательно, не могут быть равны null.

Именование типов очень напоминает С++:

За исключением того, что для беззнаковых чисел упрощено именование: теперь для этого используется первый символ ‘u‘ перед названием типа, вместо слова «unsigned», использовавшегося в С++.

На практике, написать uint намного удобнее, чем unsigned int.

Ссылочные типы крайне похожи на ссылки в С++. Правда, в отличие от указателя в С++, ссылочный тип гарантирует, что ссылка указывает на объект заданного типа в памяти, либо может быть равна null.

Т.е., в данном случае, на практике было выделено место в памяти, и str содержит ссылку на него.

Массивы и классы в C# являются ссылочными типами.

Типы и псевдонимы (с помощью которых, как правило происходит объявление):

СТS Тип Имя псевдонима в С# Описание
System.Object object Класс , базовый для всех типов (CTS)
System.String string Строка
System.SByte sbyte 8 -разрядный байт (со знаком)
System.Byte byte 8 -разрядный байт (без знака)
System.S16 short 16-разрядное число (со знаком)
System.UM16 ushort 16-разрядное число (без знака)
System.Int32 int 32-разрядное число (со знаком)
System.UInt32 uint 32-разрядное число (без знака)
System.Int64 long 64-разрядное число (со знаком)
System.UInt64 ulong 64-разрядное число (без знака)
System.Char char 16-разрядный символ (Unicode)
System.Single float 32-разрядное число с плавающей точкой, (стандарт IEEE)
System.Double double 64-разрядное число с плавающей точкой, (стандарт IEEE)
System.Boolean bool Булевское значение (true/false)
System.Decimal decimal Данный 128 разрядный тип используется в основном, когда требуется крайне высокая точность (до 28 знака)

Теперь рассмотрим, как работает оператор ветвления, операторы выбора и как реализуются циклы.

Оператор выбора (условный оператор IF)

Как известно, оператор выбора используется для последующего выполнения или не выполнения некоторого оператора или группы операторов, в зависимости от условия. Если предлагаемое условие истинно, то вложенный оператор или блок кода выполняется. Альтернативная ветвь, которая может присутствовать (а может и нет) выполнится, если условие ложно.

Также можно использовать упрощенный синтаксис, подобно С++ используя оператор: (resault == 777) ? true : false;

Оператор ветвления

Оператор ветвления может иметь большое количество ветвей, выбор которых осуществляется с помощью значения управляющего выражения. Это очень удобный способ реализации кода, когда существует некий параметр, в зависимости от которого должны выполняться те или иные ветви кода. В C# он реализуется следующим образом:

Также в языке С# существуют четыре вида циклов.
Циклы реализуются с помощью следующих зарезервированных слов: while , do while, for , foreach .

Рассмотрим каждый на примере.

Примечание: переменные, объявленные в цикле (в том числе в заголовке цикла for и foreach) не видны снаружи цикла (так же, как в стандартном C++).

1. Оператор цикла while. Пока истинно управляющее условие, выполняется оператор (или тело цикла).

Пример: значение переменной a инициируется равным 100, затем, пока а больше 5, выполняется тело цикла — вывод а, затем уменьшение его значения на 1.

2. Оператор цикла do-while. В данном случае тело цикла выполняется до проверки условия.

3. Оператор цикла for. Цикл for используют, как правило, когда число повторений известно заранее, т.е. в задачах связанных с перебором. Мы устанавливаем начало отсчета, условие остановки и тип изменения параметра.

Пример: перебор значения для a = 100 изначально, до тех пор пока a больше 5. После каждого выполнения тела цикла, a уменьшается на 1.

4. Оператор цикла foreach. Этот цикл полезен, когда необходимо перебрать все элементы массива, не вдаваясь в подробности.

Пример: массив a состоит из 3 элементов. Цикл foreach переберет все значения, имеющиеся в массиве, приравнивая их к переменной x. В теле цикла мы производим вывод этих значений.


Как видно из кода, с массивами работать необходимо не совсем так, как в старом-добром С++.

Массивы

Массивы претерпели изменения по сравнению с синтаксисом языка С++.

Массивы в .NET имеют тип System.Array. Они не копируются при присваивании (т.е. это ссылки, а не значения). Также их можно использовать в циклах foreach. Свойство массива Length содержит общее число элементов массива, что, кстати, очень удобно.

Одномерные массивы

Начнем мы с одномерных массивов. Данный тип массива включает в себя информацию о базовом типе элементов, которые может содержать массив, а также о количестве элементов в массиве (так называемая размерность массива). Нумерация элементов массивов так же, как в языке С/C++, начинается с нуля.

Одномерные массивы определяются следующим образом:

Здесь arr_name — имя массива, 100 — количество элементов в массиве. Так как нумерация начинается с нуля, первый элемент доступен через следующее обращение: arr_name[0], последний: arr_name[99].

Теперь рассмотрим, как мы можем заполнить массивы значениями, а именно — три способа заполнения.

Прямоугольные массивы

Прямоугольный массив — это не что иное, как двумерный массив, например, размерностью 4×2:

В данном коде мы рассмотрели пример вывода значений из двумерного массива.

Классы

Следующим пунктом в освоении C#, являются классы. Синтаксис крайне прост, очень похож на С++:

Ключевое слово class, затем имя класса и перечисление его членов, заключенное в фигурные скобки, — на первый взгляд, мало что изменилось.

Модификатор доступа

C# имеет 4 модификатора доступа к элементам и методам класса:

public — член класса доступен вне определения класса и иерархии производных классов.

protected — член класса невидим за пределами класса, и обращаться к нему могут только производные классы.

private — член класса недоступен за пределами области видимости определяющего его класса. Поэтому доступа к этим членам нет даже у производных классов.

internal — член видим только в пределах текущей единицы компиляции. Модификатор доступа internals в плане ограничения доступа является гибридом public и protected, который зависит от местоположения кода.

Безусловно, классы это очень обширная тема. Мы рассмотрим ее достаточно подробно на примере разработки класса и реализации консольной работы с ним.

Введение в программирование C# на Unity

Несмотря на то, что встроенные компоненты Unity могут быть очень разносторонними, вскоре ты обнаружишь, что тебе нужно выйти за пределы их возможностей, чтобы реализовать свои собственные особенности геймплея. Unity позволяет тебе создавать свои компоненты, используя скрипты. Они позволяют активировать игровые события, изменять параметры компонентов, и отвечать на действия Игрока каким тебе угодно способом.

Unity поддерживает следующие языки программирования: C# и Javascript. Языки C# и Javascript считаются одними из самых популярных среди программистов. На C# пишутся программы для компьютера, веб приложения, а Javascript активно используется для создания интернет-страниц. В нашем случае:

Установка среды разработки

Чтобы писать скрипты, необходим редактор кода. В комплекте с Unity идет MonoDevelop, так что его не требуется устанавливать отдельно. Другой вариант — использовать Visual Studio — мы рекомендуем ее. Сменить среду разработки можно в настройках: Edit → Preferences, а затем выбери панель External Tools.

Вывод сообщения в консоль Unity

Когда ты напишешь свой первый код и добавишь его в Unity, Unity проверит код и, если в нем нет ошибок, произойдет компиляция.

Консоль (англ. — Console) – это панель в Unity, которая отображает ошибки в коде (отображаются красным значком), предупреждения (отображается желтым значком) и позволяет выводить справочную информацию (белый значок). По умолчанию эта панель отображается в нижней части программы в закладке Console. Если эта панель не отображается на экране, то в главном меню выбери Window → Console.

Цукерберг рекомендует:  7 технологий, которые могут прийти на смену паспортам

Чтобы создать скрипт выбери Assets → Create → C# Script. Имя скрипта должно быть обязательно на английском и начинаться с большой буквы. Открой созданный скрипт и напиши:

Скрипт не будет работать до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Ты можешь прикрепить скрипт перетащив его на игровой объект в окно Иерархия или через окно Инспектор выбранного игрового объекта.

Код, который должен вызываться один раз при старте программы, ты можешь написать внутри функции Start(), как в примере выше.

Код, который должен вызываться каждый кадр, ты можешь написать внутри функции Update().

Переменные

Если ты хочешь сохранить данные (количество жизней игрока, патронов или очков опыта), то для этого используются переменные. Переменные разделяются на типы, которых существует огромное множество.

Переменная — поименованная область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы. Переменные хранят в себе информацию разного типа, эти данные называют значением переменной. Для каждого типа данных есть свой тип переменной. Например:

  1. Целочисленные: int (от –2 147 483 648 до 2 147 483 647), long (от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807).
  2. Символы и строки: char (элемент в кодировке UTF-16), string (последовательность элементов в кодировке UTF-16).
  3. С плавающей запятой (дробные): float (от 1,5 × 10–45 до 3,4 × 1038, с точностью до 7 цифр), double (от 5,0 × 10–324 до 1,7 × 10308, с точностью до 15 цифр).
  4. Логические: bool (значение true или false).

Инициализация переменной

Все переменные в C# должны быть объявлены (инициализированы) до их применения. Например:

Задать значение переменной можно, в частности, с помощью оператора присваивания — знак «=». Кроме того, при объявлении переменной можно сразу задать ее значение. Например:

Переменные численных типов можно складывать, вычитать, умножать и делить:

+ — операция сложения;

— операция вычитания;

* — операция умножения;

/ — операция деления.

А вот так сумму чисел можно вывести в консоль:

Счетчик времени с помощью Time.deltaTime

Практически во всех играх требуется знать сколько времени прошло с момента запуска игры (пример: игры на время). Но в Unity мы можем узнать только сколько прошло времени между кадрами (напоминаю, что игра – это набор кадров, которые быстро меняются. В одну секунду количество таких кадров может достигать 60 и больше).

Чтобы узнать сколько времени прошло между кадрами — используется Time.deltaTime.

Чтобы сделать дробное число целым, ставим перед ним (int).

Позиция объекта

Координаты объекта хранятся в компоненте Transform, свойство — position. Каждая координата имеет тип float. Вот так можно выводить координаты объекта в консоль:

Разработка мощной игры на C#, .NET. Возможно-ли?

Здравствуйте. У меня есть хорошия идея проекта. Монетизированная онлайн игра с хорошей графикой. Идея оригинальна.

Собственно вопрос. Возможно-ли с помощью всех прелестей языка Си Шарп (.NET, WPF, WCF, WWF SilverLight . + использование DirectX и Direct 3D и OpenGL) написать полноценную монетизированную онлайн игру с хорошей графикой (на уровне NFS, GTA, Perfect World, HMM 5) ? Что для этого нужно?

Знания языка C# есть. Практика есть. Не знаю с чего начать, чтобы не тратить своё и чужое время впустую.

И какие основные моменты нужно знать в моём случае. В каких еще сферах пригодятся знания? Вообщем к чему быть готовым? Рад буду любому совету.

П.С. Надеюсь вы не поднимите мой ворпос на смех, т.к на начальном этапе каждый в чем-то некомпитентен как специалист.

Спасибо! С уважением, Александр !

21.03.2012, 14:43

Разработка игры Pacman на .NET Windows Forms
Планирую написать игру Pacman на .NET Windows Forms с использованием паттернов MVC, Strategy. Я в.

Видеокарта для мощной рабочей конфигурации (не игры)
Доброго дня. Собираю себе конфигурацию для работы на базе HUANAN X79 + Xeon E5 2680 Назрел вопрос.

.NET без .NET, возможно ли?
Вобщем возникла проблема! Я написал программу для универа. без .NET ее сложнее было бы написать.

Разработка игры
Привет!возник такой вопрос:хочу создать свою игру,но вот незнаю какой язык программирования.

Разработка 2д игры
Я знаю с++ и си.Хотела бы создать свою игру но не в виде консольного приложение.можете подсказать.

21.03.2012, 16:41 2

Решение

Здравствуйте. У меня есть хорошия идея проекта. Монетизированная онлайн игра с хорошей графикой. Идея оригинальна.

Собственно вопрос. Возможно-ли с помощью всех прелестей языка Си Шарп (.NET, WPF, WCF, WWF SilverLight . + использование DirectX и Direct 3D и OpenGL) написать полноценную монетизированную онлайн игру с хорошей графикой (на уровне NFS, GTA, Perfect World, HMM 5) ? Что для этого нужно?

Знания языка C# есть. Практика есть. Не знаю с чего начать, чтобы не тратить своё и чужое время впустую.

И какие основные моменты нужно знать в моём случае. В каких еще сферах пригодятся знания? Вообщем к чему быть готовым? Рад буду любому совету.

П.С. Надеюсь вы не поднимите мой ворпос на смех, т.к на начальном этапе каждый в чем-то некомпитентен как специалист.

Спасибо! С уважением, Александр !

На шарпе сделать хорошую и качественную игру вполне реально. Вывод графики все равно реализован на низком уровне, так что более низкая скорость работы NET особой роли не сыграет, а вот скорость разработки программы будет существенно выше. Для сравнения скрипты UDK (движка Unreal) выполняются в 20-30 раз медленнее, чем NET, но это не мешает ему быть движком ААА уровня. Правда вам наверно стоит вместо DirectX посмотреть в сторону графических движков или XNA, так как Managed версию DX Microsoft больше не поддерживает.

Самое интересное, что для разработки игры вам понадобятся не столько навыки программиста, сколько знание психологии потенциальной аудитории, экономики для монетизации, менеджмента для управления командой и прочих областей не связанных с программированием. Так, например, заставить другого программиста оформлять всю проектную документацию гораздо сложнее, чем разработать самообучающийся ИИ, если ранее не приходилось это делать.

Что касается непосредственно именно технических знаний, то полезно знать методы оптимизации, системы нечеткой логики или нейронные сети, для создания реалистичной физики нужно знать механику на уровне сложения сил и возникновения моментов сил, для сетевой части методику сетевого обмена данными между компьютерами, методы тестирования и отладки многопоточного кода, для безопасности проекта как от внешних, так и от внутренних угроз полезно знать методы контроля целостности, методы верификации клиентской версии программы и сетевых пакетов, методы защиты серверов от сетевых атак и т.п. Хоть это и выглядит довольно страшно на первый взгляд, но на самом деле углубленных знаний по всем этим дисциплинам не нужно, да и не обязательно все это нужно знать самому, ведь для этого есть еще команда.

Начинать работу следует с одного: с составления диздока. В этом случае вы уже на раннем этапе выявите многие нестыковки и противоречия, на ликвидацию которых уйдет потом много времени. Второй плюс в составлении диздока — пока вы будете его писать окончательно приведете ваши мысли и идеи в порядок, у вас на руках будет документ, который описывает всю вашу игру от начала и до конца. Так же вы окончательно определитесь с используемыми технологиями, тенденциями в индустрии и наберете много материала для практической реализации. Не случайно в научных работах и диссертациях всегда начинают с обзора существующих методов и уже опираясь на них создают свое.

После того, как диздок будет написан, можно уже приступать непосредственно к разработке.

PS. Как всегда получилось немного сумбурно, так что прошу сильно не пинать.

Уроки C#

Уроки C# (C sharp) | #1 — Что такое C# и зачем он нужен?

Видеоурок

Благодаря незаурядной мощности языка, на него пал выбор разработчиков движка Unity . Сегодня является одним из топовых движков для игр на Windows. Выпуск и активное использование движка пошли на руку C#, который стал ещё популярнее.

После базового изучения базовых принципов работы с языком и его синтаксиса, сразу можно перейти к углублённому изучению библиотек и смежных технологий. Большинство современных проектов пишутся с их привлечением, на чистом C# работают редко.

Если сравнить С# с прочими языками, его можно назвать довольно молодым, хотя за плечами уже пройден немалый путь. Впервые полноценная версия языка появилось после выхода Microsoft Visual Studio .NET, событие датируется февралём 2002 года. На сегодня актуальная версия — C# 7.0, выпущенная 7.03.2020 параллельно с Visual Studio 2020.

В C Sharp используется синтаксис, сильно напоминающий Си и приближённый к С++ , Java . Если есть познания в одном их перечисленных языков, изучить C# станет значительно легче. Это объектно-ориентированный язык, который немало позаимствовал из С++ и Java. Для примера, С# обладает поддержкой наследственности, полиморфизма, повторную загрузку операторов, статической типизации. Такой подходит помогает в решении распространённых задач в сфере разработки крупных приложений, сохраняющих гибкость, расширяемость и масштабируемость. C# всё ещё развивается, после каждого дополнения в языке появляются новые функции, преимущественно довольно полезные. Среди них: асинхронная работа, переменное связывание, лямбды и т. п.

Какова роль .NET?

Если речь заходит о C#, часто подразумеваются технологии, связанные с платформой .NET (WPF, ASP.NET). То же самое справедливо в обратном направлении, говоря про .NET, думают про C#. Безусловно, понятия имеют жёсткую взаимосвязь, но не являются синонимами. C# — это язык, созданный для взаимодействия с фреймворком .NET. Тем не менее .NET – это довольно широкое понятие.

Сейчас вспоминаются слова Билла Гейтса, не дословно, но смысл таков: « Платформа .NET – лучшее творение Microsoft ». Может так и есть, ведь фреймворком очень мощный и постоянно используется в разработке приложений.

Ключевые черты платформы:

  • Работает параллельно с разными языками. Популярностью С# во многом обязан общеязыковой среде CLR. Сейчас платформа способна работать с С#, VB.NET, C++, F#, но и на этом список не заканчивается, ведь она работает с диалектами, что привязаны к .NET (наподобие Delphi.NET). После компиляции кода с любого из перечисленных языков, вся интерпретируется в общий язык CIL – это своеобразный ассемблер для .NET. Такой подход позволяет использовать несколько языков для создания подключаемых модулей программы;
  • Кроссплатформенность. Данную платформу реально переносить, хоть и есть отдельные ограничения. Сегодня актуальная версия фреймворка работает на всех поддерживаемых Виндовс: от Windows Vista до «десятки». За счёт проекта Mono появилась возможность разрабатывать программы под Linux (различные дистрибутивы), Android и iOS;
  • Обширная библиотека классов. .NET Framework обладает единой, унифицированной библиотекой классов, с которой работают все поддерживаемые языки. Библиотека классов пригодится при создании любых программ: от блокнота до огромного веб-сайта;
  • Масса встроенных технологий. Среда CLR в сочетании с библиотекой классов – это основа для большого пакета вспомогательных технологий. Их могут использовать все программисты во время разработки приложений. В качестве примера, при взаимодействии с базами данных можно использовать технологию ADO.NET. Во время создания графических редакторов с многочисленными функциями удобно использовать WPF. Во время веб-разработки наверняка используют ASP.NET.

Стоит упомянуть об одной особенности фреймворка и языка – автоматическая очистка хлама в памяти. Таким образом отпадает необходимость вспоминать, и вручную задавать код для высвобождения занятой памяти. Среда CLR без дополнительных команд позаботится о сборе мусора и его удалении.

Управляемый и неуправляемый код

Некоторые читатели уже слышали, когда о приложении, построенном на С#, говорят – управляемый код. Какой смысл этого выражения? Это означает, что программа базируется на .NET и поддерживает управление общеязыковой средой CLR. Вы же помните, как CLR самостоятельно очищает память. Существуют и другие приложения, разрабатываемые на C++, они не преображаются в унифицированный CIL-язык (свойственный для С#, VB.NET). На выходе – это стандартный машинный код. Таким приложением .NET не может управлять.

При этом платформа .NET позаботилась о том, чтобы была возможность работать даже с неуправляемым кодом. Помимо обычных классов, предоставляемых библиотекой .NET, есть возможность применять сборки COM.

JIT-компиляция

Исходный код C# компилируется в программы или отдельные сборки на CIL с расширениями dll, exe. В процессе запуска готового приложения выполняется JIT-компиляция – это сокращение от Just-In-Time (Просто сейчас). На выходе получается машинный код, который передаётся на исполнение.

Важным достоинством приложения является возможность компиляции только нужных в данный момент частей программы. Если приложение не обращается к какой-то части кода, его компиляция не происходит. В момент обращения выполняется моментальная компиляция из CIL в машинный код.

Все скомпилированные блоки не удаляются, они хранятся до прекращения работы с программой. Это помогает сократить затраты системных ресурсов на повторную компиляцию.

Это все базовые знания, которые нужно иметь в отношении платформы .NET

Дополнительные курсы

На нашем сайте вы можете найти дополнительные курсы по языку C#. Все курсы представлены на этой странице .

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих