【发布时间】:2010-01-11 16:51:21
【问题描述】:
有人知道为什么 BCL 团队选择在 UnmanagedMemoryStream 的构造函数中使用 Byte* 而不是 IntPtr?这会迫使您使用不安全的上下文来构造类型。似乎他们可以使用 IntPtr 并且不会强制使用不安全的上下文。
【问题讨论】:
有人知道为什么 BCL 团队选择在 UnmanagedMemoryStream 的构造函数中使用 Byte* 而不是 IntPtr?这会迫使您使用不安全的上下文来构造类型。似乎他们可以使用 IntPtr 并且不会强制使用不安全的上下文。
【问题讨论】:
我猜是因为它更安全。如果他们使用 IntPtr,则可以使用任何垃圾值调用构造函数。使用 byte* ,编译器至少可以验证内存是否有效且已固定。尽管将 IntPtr 转换为 byte* 非常简单。
【讨论】: