【问题标题】:What are Native-sized integers in C# 9.0? [closed]C# 9.0 中的本机大小整数是什么? [关闭]
【发布时间】:2021-06-11 09:12:57
【问题描述】:
  • 这些原生大小的整数是什么? nintnuint?
  • 它们有什么用途,有什么好处?

【问题讨论】:

  • @Sommmen 链接的前三行说明了一切:“从 C# 9.0 开始,您可以使用 nint 和 nuint 关键字来定义本机大小的整数。在运行时这些是 32 位整数32 位进程,或在 64 位进程中运行时的 64 位整数。它们可用于互操作场景、低级库,以及在广泛使用整数数学的场景中优化性能。”
  • 另一个reference

标签: c# .net c#-9.0


【解决方案1】:

这些是整数类型,其范围和大小符合运行软件的 cpu 架构上的“字大小”。

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

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

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

您可以查看documentation 了解更多信息。它还提到了这一点:

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

在 32 位进程中处理 64 位整数或在 64 位进程中处理 32 位整数可能会有(轻微的)性能损失(尽管对于这个变体来说可能更少),所以使用正确的如果您需要维持最后一盎司的性能,则正确的进程类型中的整数类型可能会有所帮助。

【讨论】:

  • @damien,根据我的经验,当我不得不勉强发挥最后一盎司的性能时,我对我正在编写的代码的反应通常是“eek”,但你当然是对的: )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2017-06-17
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多