В C# атрибуты — это специальные классы, которые позволяют добавлять метаданные к элементам кода (классам, методам, свойствам и т.д.). Чтобы объявить и определить свой атрибут, нужно:
Специальное ключевое слово, используемое в определении свойства для получения значения закрытого поля. Оно обеспечивает доступ к данным извне класса, контролируя логику получения.
Оператор throw используется для явного инициирования исключения. Он позволяет прервать нормальное выполнение программы и передать управление блоку обработки исключений.
События в C# — это механизм, основанный на шаблоне "наблюдатель" (Observer Pattern), позволяющий объекту (издателю) уведомлять другие объекты (подписчиков) о наступлении определенного действия или изменения состояния.
Интерфейс IReadOnlyListT в C# представляет собой коллекцию элементов, к которой можно получить доступ по индексу, но нельзя изменять содержимое (то есть добавлять, удалять или изменять элементы).
В проектах на C# для работы с PostgreSQL я использовал библиотеку Npgsql — это .NET Data Provider для PostgreSQL, который обеспечивает удобное подключение и выполнение запросов.
Типовая система в C# является статически типизированной и строго типизированной, что означает, что типы переменных известны во время компиляции и не могут быть произвольно изменены во время выполнения.