C# 9.0 中的本机大小的整数是什么?

Fur*_*ürk -3 .net c# c#-9.0

  • 这些本机大小的整数是什么?nintnuint
  • 它们的用途是什么?它们有什么好处?

ang*_*son 5

这些是整数类型,其范围和大小与运行软件的 CPU 架构上的“字大小”兼容。

如果软件作为 32 位进程运行,则它们的大小和范围将为 32 位,如果软件作为 64 位进程运行,则它们的大小和范围将为 64 位。

它们的主要用途是更容易编写与为 32 位/64 位 CPU 编写的其他库进行交互的互操作代码,因为您实际上可以将它们用作整数,而不必使用IntPtr这是一个不透明的相同大小的整数。

所以这基本上只是一个适当的整数类型,您可以使用它来代替IntPtr这些目的。

您可以查看文档以获取更多信息。它还提到了这一点:

...并优化广泛使用整数数学的场景中的性能。

在 32 位进程中处理 64 位整数或在 64 位进程中处理 32 位整数时可能会有(轻微的)性能损失(尽管对于此变体来说可能较少),因此在如果您需要尽力发挥最后一点性能,正确的流程类型可能会有所帮助。

  • @damien,根据我的经验,当我必须尽力发挥最后一盎司的性能时,我对我正在编写的代码的反应通常是“eek”,但你当然是对的:) (3认同)