Новые возможности в C# 7.3 – Неуправляемый код

C# logoС# 7.3, появившийся с очередным обновлением Visual Studio 2017 (версия 15.7), содержит нововведения не только для управляемого кода. Разработчики не оставили в стороне и неуправляемый код. Для него добавились следующие возможности языка:

Инициализатор stackalloc

Экземпляр типа Span<T> теперь можно инициализировать с помощью stackalloc по аналогии с массивами.

Span<int> x = stackalloc[] { 1, 2, 3 };

Повторное присвоение ссылочной переменной ref

В С# 7.3 появилась возможность изменить цель ссылочной переменной, связав ее с другой переменной. Например:

int x1 = 5;
int x2 = 6;

ref var ptr = ref x1;
// Изменим цель ссылочной переменной
ptr = ref x2; // Доступно только в C# 7.3 и выше

Использование fixed для работы с типами

Шаблон fixed используется в небезопасном (unsafe) коде для получения ссылки на управляемый буфер. При этом гарантируется, что в зоне действия fixed буфер не будет перемещен или уничтожен сборщиком мусора.

Изначально fixed мог быть использован только с массивами неуправляемых объектов и типом string. C# 7.3 расширяет этот список и позволяет использовать ImmutableArray<T>, Span<T>, Utf8String. Кроме того улучшена поддержка string.

Индексирование перемещаемых буферов фиксированного размера

Индексирование буферов фиксированного размера теперь доступно без предварительного закрепления.

Добавить комментарий