2010-01-11 2 views
1

У кого-нибудь есть идея, почему команда BCL решила использовать Byte * вместо IntPtr в конструкторах для UnmanagedMemoryStream? Это заставляет вас использовать небезопасный контекст для построения типа. Похоже, что они могли использовать IntPtr, и это не привело бы к небезопасному контексту.System.IO.UnmanagedMemoryStream - почему Byte * вместо IntPtr

ответ

2

Я думаю, потому что это безопаснее. Если бы они использовали IntPtr, конструктор можно было бы вызвать с любым значением мусора. С байтом * есть хотя бы выстрел в компилятор, проверяющий, что память действительна и закреплена. Хотя приведение IntPtr в байт * довольно просто.

Смежные вопросы