System.IO.UnmanagedMemoryStream - 为什么Byte *而不是IntPtr

时间:2010-01-11 16:51:22

标签: .net byte intptr

任何人都知道为什么BCL团队选择在UnmanagedMemoryStream的构造函数中使用Byte *而不是IntPtr?这会强制您使用不安全的上下文来构造类型。看起来他们本可以使用IntPtr而不会强迫不安全的上下文。

1 个答案:

答案 0 :(得分:2)

我猜是因为它更安全。如果他们使用IntPtr,则可以使用任何垃圾值调用构造函数。使用byte *时,编译器至少会有一个镜头来验证内存是否有效并固定。虽然将IntPtr转换为byte *非常简单。