Ver código fonte

Добавить 'Лекции/CSharp/Titov2.md'

u23titov 2 semanas atrás
pai
commit
671692d135
1 arquivos alterados com 25 adições e 0 exclusões
  1. 25 0
      Лекции/CSharp/Titov2.md

+ 25 - 0
Лекции/CSharp/Titov2.md

@@ -0,0 +1,25 @@
+# Язык C# и среда .NET
+
+C# (произносится "Си шарп") - это язык программирования с синтаксисом, подобным языку C, разработанный компанией Microsoft и функционирующий в рамках управляемой среды выполнения - общеязыковой исполняющей среды. Архитектурно C# является наследником идей C++ и Java, но с рядом значительных улучшений в области типобезопасности и подходов к программированию. Одним из ключевых нововведений стала глубокая интеграция языка с компонентно-ориентированной моделью разработки, что выражается в наличии таких конструкций, как свойства, события и атрибуты, которые позволяют описывать поведение компонентов декларативно.
+
+Ключевое различие между C# и Java кроется в тесной интеграции языка с платформой .NET. Если Java изначально создавался как платформа для предприятий, то C# развивался как инструмент для всей экосистемы Windows, а после появления базовой платформы .NET (ныне .NET 5+) стал полностью кроссплатформенным решением с открытым исходным кодом. Это позволяет разрабатывать приложения для Windows, Linux, macOS, мобильных устройств и игр на едином наборе технологий. Более того, единая среда выполнения позволяет использовать несколько языков в одном проекте: например, написать логику на C#, а отдельные модули на F#.
+
+С точки зрения синтаксиса, C# предлагает разработчику более широкие возможности, чем классическая Java. Например, здесь присутствуют свойства как языковая конструкция, включающая методы доступа, типы-значения в дополнение к ссылочным типам, а также делегаты - типобезопасные указатели на методы, лежащие в основе событийной модели. Кроме того, C# поддерживает перегрузку операторов, что позволяет определять поведение стандартных операторов для пользовательских типов, и индексаторы, дающие возможность обращаться к объектам как к массивам.
+
+*Таблица 1. Сравнение синтаксических конструкций*
+
+| Конструкция | Назначение | Преимущество |
+| -------- | -------- | -------- |
+| Делегаты | Указатели на методы с проверкой типов | Обработка событий, обратные вызовы |
+| Свойства | Включение полей с логикой доступа | Чистота кода, контроль доступа |
+| LINQ | Встроенные языковые запросы | Единый синтаксис запросов к разным источникам |
+
+![](tit1.jpg)
+
+Ключевой особенностью, упрощающей жизнь начинающим, является встроенный язык запросов LINQ. LINQ позволяет писать описательные запросы к коллекциям, базам данных или XML, используя синтаксис, похожий на язык запросов, но встроенный прямо в код C#. Это снижает мыслительную нагрузку при переходе от работы с табличными данными к объектным моделям в коде. Например, фильтрация списка объектов выполняется одной строкой кода вместо целого цикла с условиями, что делает код более читаемым и менее подверженным ошибкам. LINQ работает с любым типом, реализующим интерфейс IEnumerable, что делает его универсальным инструментом.
+
+Важно понимать, что LINQ бывает двух видов: LINQ to Objects для работы с коллекциями в памяти и LINQ to Entities для работы с базами данных через технологию Entity Framework. Во втором случае запросы не выполняются в клиентской памяти целиком, а преобразуются в SQL-запросы и выполняются на стороне сервера баз данных. Это позволяет эффективно работать с большими объемами данных, не загружая их полностью в оперативную память. Разработчику не нужно знать тонкости SQL для каждой конкретной базы данных - LINQ предоставляет единый интерфейс.
+
+Современные версии C# (начиная с 8.0 и выше) продолжают развиваться, добавляя новые возможности, такие как ссылочные типы, допускающие null (для борьбы с ошибками нулевых ссылок), асинхронные потоки для работы с последовательностями данных, поступающих асинхронно, и шаблоны свойств для более выразительного сопоставления с образцом. Эти нововведения делают язык еще более безопасным и удобным, позволяя выражать сложные концепции лаконично и понятно.
+
+Таким образом, изучение C# дает понимание не только синтаксиса языка, но и устройства управляемой среды выполнения (сборка мусора, своевременная компиляция, система типов, метаданные и сборки). Это фундаментальные знания, применимые и при работе с Java, что делает C# отличным выбором для погружения в промышленную разработку. Кроме того, знание C# открывает путь к разработке под широкий спектр платформ: от веб-приложений на ASP.NET Core до настольных приложений на Windows Forms и WPF, мобильных приложений на Xamarin/MAUI и игр на движке Unity, который является одним из самых популярных игровых движков в мире.