Атрибуты позволяют добавлять пользовательскую информацию к метаданным элементов кода: сборкам, типам, членам, возвращаемым значениям и параметрам. Например, атрибуты могут быть использованы для сериализации — процесс преобразования произвольных объектов в определенный формат. В этом случае атрибуты полей могут точно устанавливать как преобразовывать поля. Можно написать собственный атрибут и затем использовать его для добавления дополнительной информации к элементам кода. Эта дополнительная информация будет скомпилирована в метаданные сборки. Позже она может быть извлечена с помощью рефлексии.
C#: обобщения (Generics)
В C# существует два механизма повторного использования кода в разных типах: наследование и обобщения (generics). Наследование делает возможным повторное использование благодаря применению базового класса, а обобщения — благодаря использованию параметров типа — шаблонов, или своеобразных плейсхолдеров типов.
C#: вложенные типы (Nested Types)
Вложенные типы (Nested Types) — это типы объявленные внутри области видимости другого типа:
C#: дата и время
Для работы с датой и временем в пространстве имен System предусмотрено три неизменяемых структуры: DateTime, DateTimeOffset и TimeSpan.
C#: Guid
Структура Guid
представляет собой глобально-уникальный идентификатор — 16-байтное значение, которое после генерация является почти наверняка уникальным в мире. Этот идентификатор часто используется для различных видов ключей в приложениях и базах данных. Количество уникальных идентификаторов Guid
составляет 2128 или 3,4×1038.
C#: кортежи (Tuple)
Кортежи (Tuple) — множество обобщенных классов для хранения наборов элементов с разными типами:
C#: перечислимые типы (enum)
Перечисление (enumeration) — это множество именованных целочисленных констант. Перечисляемые типы относятся к значимым типам.
Yii: миграция базы данных (database migration)
Yii поддерживает очень удобный механизм миграции базы данных. Ниже перечислены основные команды.
C#: интерфейсы (Interfaces)
Интерфейс во многом похож на класс, но он является скорее описанием чем реализацией методов. Особенности интерфейсы сводятся к двум пунктам:
- Все члены интерфейса являются абстрактными. Причем таковыми они являются по умолчанию, т.е. использовать ключевое слово
abstract
не нужно. - Класс (или структура) может реализовывать несколько интерфейсов (а вот наследовать класс только один)
C#: модификаторы доступа (Access Modifiers)
С помощью модификаторов доступа можно ограничить доступ к типу или отдельному его члену из других типов и сборок. Модификатор добавляется к объявлению типа или его члена.