Платформа .NET Framework состоит из общеязыковой среды выполнения (среды CLR) и библиотеки классов .NET Framework. Основой платформы .NET Framework является среда CLR.
Платформы и технологии разработки: Платформа .NET Framework включает библиотеки для конкретных областей разработки приложений, Console apps, Windows GUI (Graphical user interface ) apps (Windows Forms), Windows Presentation Foundation (WPF) apps, ASP.NET apps, Windows services, Сервисно-ориентированные приложения с использованием Windows Communication Foundation (WCF), Приложения с поддержкой рабочего процесса, использующие Windows Workflow Foundation (WF),
.NET предоставляет среду выполнения, называемую общеязыковой средой выполнения, в которой выполняется код и предоставляются службы, упрощающие процесс разработки.
CLR – Pявляется основой .NET framework и выполняет четыре основных важных задачи:
1) Garbage Collection (Сборка мусора) – CLR автоматически управляет памятью, устраняя утечки памяти. Когда объекты не упоминаются, сборщик мусора автоматически освобождает эту память, обеспечивая эффективное управление памятью.
2) CAS (защита доступа к коду) Code Access Permissions – Проистекают из CodeAccessPermission класса. Разрешения необходимы для доступа к защищенным ресурсам, таким как файлы и переменные среды, а также для выполнения защищенных операций, таких как доступ к неуправляемому коду.
3) CV (Code Verification) – Это обеспечивает правильное выполнение кода и безопасность типов во время выполнения кода. Это предотвращает выполнение исходным кодом незаконных операций, таких как доступ к недопустимым ячейкам памяти и т. Д.
4) Перевод с IL на родной (Intermediate language) – Переводчики и оптимизаторы на нативный: - CLR использует JIT и компилирует код IL в машинный код, а затем выполняет. CLR также определяет, в зависимости от платформы, какой оптимизированный способ выполнения кода IL.
CTS – Гарантирует, что типы данных, определенные на двух разных языках, будут скомпилированы в общий тип данных. Это полезно, потому что могут возникнуть ситуации, когда мы хотим, чтобы код на одном языке вызывался на другом языке.
Мы можем увидеть практическую демонстрацию CTS, создав одно и то же приложение на C # и VB.NET, а затем сравнив код IL обоих приложений. Здесь типы данных обоих кодов IL одинаковы.
Язык CIL также нередко называют просто IL - intermediate language – буквально «промежуточный язык».
CLS – Это подмножество CTS. CLS - это набор правил или рекомендаций. Когда любой язык программирования соответствует этому набору правил, он может использоваться любым языком .NET. CTS.
Директива using позволяет использовать типы, определенные в пространстве имен, без указания полного пространства имен этого типа. В базовой форме директива using импортирует все типы из одного пространства имен.
Ключевое слово namespace используется для объявления области действия, которая содержит набор связанных объектов. представляет собой некий контейнер для логического объединения именованных сущностей, таких как классы, интерфейсы, перечисления.
Переменная любого типа объявляется с помощью ключевого слова var и должна быть инициализирована. Переменная любого типа является implicitly typed variable. Как только этот тип определен, этот тип закрепляется за переменной до конца ее существования.
Класс – основной тип данных языка C#. Класс представляет собой конструкцию, которая объединяет поля, свойства и методы. Класс является определением для создания объектов или экземпляров класса.
Конструктор - это специальный метод, который используется для инициализации объекта. Каждый класс имеет конструктор, если мы явно не объявляем конструктор для любого класса C#, компилятор строит конструктор по умолчанию для этого класса. Конструктор не имеет никакого типа возврата. Конструкторы отвечают за инициализацию объекта и выделение памяти его класса. Конструктор C# вызывается во время создания объекта. Он создает значения, т.е. предоставляет данные для объекта, поэтому он известен как конструктор.
Это механизм перемещения данных из области стека в кучу - и наоборот.
Когда любой значимый тип присваивается к ссылочному типу данных, значение перемещается из области стека в кучу. Эта операция называется упаковкой.
Когда любой ссылочный тип присваивается к значимому типу данных, значение перемещается из области кучи в стек. Это называется распаковкой.
FIFO - это аббревиатура от «first-in-first-out». Это метод обработки структур данных, при котором первый элемент обрабатывается первым, а самый новый элемент обрабатывается последним.
LIFO - это сокращение от «Last in, first out», то же самое, что и first in, last out (FILO). Это метод обработки структур данных, в котором последний элемент обрабатывается первым, а первый элемент обрабатывается последним.
Определяет откуда можно обращаться к классу или его членам.
Если классу или члену не задан модификатор доступа, то устанавливается модификатор по умолчанию internal для класса и private для членов.