У кого-нибудь есть идея, почему команда BCL решила использовать Byte * вместо IntPtr в конструкторах для UnmanagedMemoryStream? Это заставляет вас использовать небезопасный контекст для построения типа. Похоже, что они могли использовать IntPtr, и это не привело бы к небезопасному контексту.System.IO.UnmanagedMemoryStream - почему Byte * вместо IntPtr
1
A
ответ
2
Я думаю, потому что это безопаснее. Если бы они использовали IntPtr, конструктор можно было бы вызвать с любым значением мусора. С байтом * есть хотя бы выстрел в компилятор, проверяющий, что память действительна и закреплена. Хотя приведение IntPtr в байт * довольно просто.
Смежные вопросы
- 1. IntPtr to Byte [] Array C#
- 2. Почему C# определяет Byte + Byte = Int32 вместо Byte + Byte = Byte, как VB?
- 3. C# как получить Byte [] из IntPtr
- 4. Как преобразовать массив byte [] в IntPtr?
- 5. Почему я получаю Stream как System.IO.UnmanagedMemoryStream?
- 6. Невозможно скопировать указатель (IntPtr) в Byte [] из метода CryptGetHashParam
- 7. Передача класса как IntPtr
- 8. Marshal.Copy, копируя массив IntPtr в IntPtr
- 9. Заявление ALTER: Почему VARCHAR2 (50 BYTE) вместо VARCHAR2 (50 CHAR)?
- 10. ImageSource from 3 IntPtr
- 11. Преобразование структуры к IntPtr
- 12. IntPtr в Int - C#
- 13. Работа с массивом IntPtr
- 14. Почему нельзя сравнивать IntPtr.Zero и default (IntPtr)?
- 15. Литералы IntPtr и UIntPtr
- 16. Плагин Maven вместо javaagent для Byte Buddy?
- 17. Как передать IntPtr в байт *
- 18. Marshal.SizeOf (typeof (IntPtr)) vs sizeof (IntPtr)
- 19. typedef int * intptr ИЛИ typedef int * intptr;
- 20. C# .NET IntPtr Недопустимый тип
- 21. Добавление IntPtr
- 22. Почему byte b = (byte) 0xFF равно целому числу -1?
- 23. преобразовать IntPtr в BitmapImage
- 24. glTexImage2D + byte []
- 25. Как преобразовать IntPtr в поток?
- 26. Перемещение BYTE в BYTE
- 27. IntPtr преобразования в STRUCT MonoTouch
- 28. IntPtr vs ref C#
- 29. C# указатель превышает предел IntPtr
- 30. IntPtr vs C++ указатели