代码之家  ›  专栏  ›  技术社区  ›  Keith Hill

System.IO.UnmanagedMemoryStream-为什么选择byte*而不是intptr

  •  1
  • Keith Hill  · 技术社区  · 15 年前

    有人知道为什么BCL团队选择在非托管内存流的构造函数中使用byte*而不是intptr吗?这迫使您使用不安全的上下文来构造类型。似乎他们可以使用intptr,这样就不会强制使用不安全的上下文。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Hans Passant    15 年前

    我想是因为它更安全。如果他们使用了intptr,则可以使用任何垃圾值调用构造函数。对于byte*来说,编译器至少有一个测试来验证内存是否有效和固定。尽管将intptr转换为byte*非常简单。