unmanaged constraintПозавчера на докладе меня попросили прокомментировать этот фрагмент кода из ML NET.
В частности слушателя заинтересовало, что означает ограничение
unmanaged.Тогда ответить не вышло, честно не знал 😅
Однако я не я, если не разберусь в теме, и не напишу об этом пост 😁
Запоминаем -
where T : unmanaged означает, что тип T это что-то из списка ниже:⭐️
sbyte, byte, short, ushort, int, uint, long, ulong, nint, nuint, char, float, double, decimal, bool🌴 любой
enum тип🎁 любой тип указателя (например
void*)👽 любой пользовательский
struct с полями только из unmanaged типовИными словами такое ограничение запрещает типу иметь внутри себя ссылки, управляемые GC, то есть это не ссылочный тип, или тип без членов ссылочного типа на любом уровне вложенности.
