Загрузка данных
1)
DOTNET - кроссплатформенная среда выполнения программ
CLR - Главный компонент который отвечает за GC память исключения безопасностью Jit Компилятором
FCL - Стандартная библиотека классов строк коллекций IO стримов сетью и т.д.
MSIL - Промежуточный Байт код в который переводится любой язык платформы DOTNET
JIT Компиляция - Компилятор который переводит язык из IL в машинный код
CLS - Набор правил для языков для совместимости с DOTNET
GC - Автоматический уборщик памяти который периодически очищает объект без ссылок в стеке
2)
Значимые хранят данные непосредственно (обычно в стеке), а ссылочные — ссылку на объект в куче. Значимые типы (int, struct) копируются целиком, ссылочные (class, string) копируют лишь адрес
3)
Неявное праведение когда всё безопасно происходит автоматически компилятором потери данных нет
Явное приведение требует указания в скобках при этом способе есть риск потери данных
is - проверяет является такой объект таким типом данных
as - Совершает попытку приведения объекта к типу если оно невозможно то возвращает null
Упаковка это когда вы значимый тип приводим к ссылочному путём добавления его в кучу
Распаковка это когда вы ссылочный тип приводим обратно к значению
4)
if - условие
else if - другое условие
else - если нечего не подошло
switch case выбирает из множества блоков кода то значение которое подходит
while - выполняет код пока условие истинно
do while - Сначала выполняет блок кода потом смотрит на условие
for - используется когда известно количество итераций
forech - удобно итерируется по коллекциям и массивам
5)
Одномерный массив - это базовый линейный массив элементов одного типа
Многомерный массив - это матрица зачастую в которой столбцы и строки как в таблице
Ступенчатый массив - это массив массивов где каждый новый элемент это массив
6)
System.Array - Базовый класс всех массивов в DOTNET
Sort() Сортирует элементы по возрастанию
Reverse() Переворачивает набор элементов
IndexOf() Ищет первое совпадение элемента и возвращает его Index
Clear() Сбрасывает в указанном диапазоне все элементы в default
Copy() копирует часть одного массива в другой
Resize() Изменяет размер одномерного массива
7)
String это класс который содержит в себе массив char символов Unicode он не изменяемый и всегда создаёт копию объекта
Length - Возвращает длину строки
Substring() - Извлекает часть строки по индексам
Replace() - Заменяет символы или подстроки
ToLower() / ToUpper() - Изменяет регистр
Split() - Разбивает строку на массив по разделителю.
StringBuilder это класс который не создаёт новую строку а редактирует текущую
Append() - Добавляет строку или тип данных в конец
Insert() - Вставляет строку по указанному индексу.
Remove() - Удаляет символы с указанной позиции.
ToString() - Преобразует StringBuilder в обычную string
8)
Класс - это пользовательский тип данных который содержит в себе поля данные и поведение методы это базовый класс так же ещё есть свойства они обеспечивают безлопастный доступ к полям (геттеры и сеттеры) конструкторы специальные методы вызываемые при создании объекта в C# они инициализируют поля есть 4 вида
1 Конструктор по умолчанию - Не имеет параметров если не писать то компилятор сам его создаст
2 Конструктор с параметрами - Используется для инициализации объекта конкретными значениями
3 Статический конструктор - Инициализирует статические данные класса вызывается один раз
4 Приватный конструктор - Запрещает создание экземпляров класса извне
public - Публичный доступен везде
private - Доступен только внутри класса (по умолчанию)
protected - Доступен внутри класса и дочерних классов
internal - Доступен в текущей сборке
protected internal - Доступен в текущей сборке или в дочернем классе
9)
try catch ловит ошибки в выделенном блоке и выполняет catch в котором содержится ошибка throw генерирует исключения
10)
namespace пространство имён какой то блок кода который сокрыт под namespace может быть потом использован с помощью using
11)
Перегрузка операторов позволяет определить поведение стандартных операторов для пользовательских типов.
Что можно перегружать: унарные бинарные и операторы сравнения
Нельзя перегружать: =, &&, ||, ??, ?:, =>, ->, new, typeof, sizeof, is, as, checked/unchecked
12)
Индексатор позволяет обращаться к объекту класса через квадратные скобки, как к массиву
Перегрузку можно показать на примере string где мы бы обращались по ключу
13) Свойства это переменные контролирующие доступ к полю
1 Автоматические свойства - это запись когда не нужна сложная логика и компилятор создаст скрытое поле для хранения
2 Вычисляемые свойства - это свойства которые на лету при каждом обращение к get выполняют какой то код например соединяют фамилию и имя
14)
Базовый класс (Родительский): класс, члены которого наследуются.
Производный класс (Дочерний): класс, который наследует элементы другого класса, используя двоеточие
base используется для обращения к членам родительского класса
15)
virtual/override - Используются для полиморфизма позволяя вызывать переопределённый метод Родителя
new - Создаёт новый метод с тем же именем, который скрывает метод Родителя но если вызвать через ссылку будет выполнен метод родителя
16) Абстрактный класс задают базовый шаблон который нельзя создать но можно наследовать они могут содержать абстрактные методы без реализации и обычные методы
sealed класс Ключевое слово перед class запрещает наследование от этого класса
17)
Интерфейс — частный случай абстрактного класса, в котором отсутствуют поля. Передаёт требования к поведению объекта не несёт признаков наследственности и иерархии. Интерфейсы — механизм обеспечения связанности проекта
18)
Интерфейс это контракт о том что объект умеет делать методов без логики, поддерживает множественное наследование Абстрактный класс это чем объект является, может содержать поля, конструкторы и готовый код, но не создает экземпляров сам. Так же наследование у абстрактного класса одиночное а у интерфейса множественное
19)
Struct - набор значений различных типов
Все встроенные типы данных - структуры
Struct — значимый тип (стек), class — ссылочный (куча).
20)
Enum это пользовательский тип данных, представляющий собой набор именованных целочисленных констант
Enum.GetValues - Возвращает массив значений
Enum.Parse - Преобразует строку. Если строка не совпадает, выбрасывает исключение.
21)
Делегат - Переменные для методов, позволяющие передавать функции как параметры а Многоадресные делегаты указывающие на несколько методов сразу При вызове такого делегата они все будут выполнятся по очереди
22)
Event - Механизм, позволяющий одному объекту (издателю) уведомлять другие объекты (подписчиков) о том, что что-то произошло
Делегат — это тип, указывающий на метод (как ссылка). Событие — это переменная этого типа, которая использует ключевое слово event
add подписаться +=
remove отписаться -=
в UI мы создаём класс издателя и в нём объявляем событие используя делегат далее создаём класс подписчика подписываемся на событие создаём обработчик события
23)
SKIP
24)
SKIP
25)
GC - Garbage Collector Автоматически управляет памятью, разделяя объекты на поколения (0, 1, 2) для оптимизации сборки мусора
Gen 0: Временные переменные Сборка происходит часто.
Gen 1: Объекты, пережившие сборку в Gen 0. Служит буфером.
Gen 2: Долгоживущие объекты. Сборка происходит редко, так как это требует много ресурсов.
Финализаторы - Методы вызываемые GC перед уничтожением объекта. Они нужны для освобождения неуправляемых ресурсов, если разработчик забыл вызвать Dispose
IDisposable - Интерфейс для явного, немедленного освобождения ресурсов.
Конструкция using - Автоматически вызывает метод Dispose() при выходе из области видимости даже если есть исключения
26)
File/Directory - Статические классы для работы с файловой системой
Их методы простой вариант
File.Copy(), File.Delete(), File.Move(), File.Create()
Directory.CreateDirectory(), Directory.Exists(), Directory.Delete(), Directory.GetFiles()
FileStream для байтового потока открывается вручную и закрывается вручную зачастую при видео и фотках
Текстовые потоки StreamReader StreamWriter так же открывать и закрывать вручную но уже для текстовых файлов
using - позволяет не беспокоится о закрытие
27)
Сериализация это процесс преобразования состояния объекта (данных) в последовательность байтов или текстовый формат (JSON, XML) для дальнейшей работы с ними
28)
Статический класс и члены - это инструменты для создания общих данных или методов их нельзя наследовать нельзя создать объект класса