System.IO.UnmanagedMemoryStream - почему Byte * вместо IntPtr - PullRequest
1 голос
/ 11 января 2010

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

1 Ответ

2 голосов
/ 11 января 2010

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

...