nint 和 nuint 类型

从 C# 9.0 起,可以使用 nint 和 nuint 关键字定义本机大小的整数。 在 32 位进程中运行时有 32 位的整数,在 64 位进程中运行时有 64 位的整数。 这些类型可用于互操作方案、低级别的库,可用于在广泛使用整数运算的方案中提高性能。

本机大小的整数类型在内部表示为 .NET 类型 System.IntPtr 和 System.UIntPtr。 关键字与其他数值类型不同,它们不只是类型的别名。 以下语句并不是等效的:

nint a = 1;
System.IntPtr a = 1;

运行时本机整数大小

若要在运行时获取本机大小的整数大小,可以使用 sizeof()。 但是,必须在不安全的上下文中编译代码。 例如:

Console.WriteLine($"size of nint = {sizeof(nint)}");
Console.WriteLine($"size of nuint = {sizeof(nuint)}");

// output when run in a 64-bit process
//size of nint = 8
//size of nuint = 8

// output when run in a 32-bit process
//size of nint = 4
//size of nuint = 4

也可以通过静态 IntPtr.Size 和 UIntPtr.Size 属性获得等效的值。

MinValue 和 MaxValue

若要在运行时获取本机大小的整数的最小值和最大值,请将 MinValue 和 MaxValue 用作 nint 和 nuint 关键字的静态属性,如以下示例中所示:

Console.WriteLine($"nint.MinValue = {nint.MinValue}");
Console.WriteLine($"nint.MaxValue = {nint.MaxValue}");
Console.WriteLine($"nuint.MinValue = {nuint.MinValue}");
Console.WriteLine($"nuint.MaxValue = {nuint.MaxValue}");

// output when run in a 64-bit process
//nint.MinValue = -9223372036854775808
//nint.MaxValue = 9223372036854775807
//nuint.MinValue = 0
//nuint.MaxValue = 18446744073709551615

// output when run in a 32-bit process
//nint.MinValue = -2147483648
//nint.MaxValue = 2147483647
//nuint.MinValue = 0
//nuint.MaxValue = 4294967295

常量

可以使用以下范围内的常量值:

对于 nint:Int32.MinValue 到 Int32.MaxValue。
对于 nuint:UInt32.MinValue 到 UInt32.MaxValue。

不支持的 IntPtr/UIntPtr 成员

nint 和 nuint 类型不支持 IntPtr 和 UIntPtr 的以下成员:

参数化的构造函数
Add(IntPtr, Int32)
CompareTo
Size - 改用 Size。 不支持 nint.Size,但你可以使用 IntPtr.Size 获取等效的值。
Subtract(IntPtr, Int32)
ToInt32
ToInt64
ToPointer
Zero - 改用 0。

Console.WriteLine($"{nameof(p1)} after {nameof(p2)} is modified: {p1}");
Console.WriteLine("The first number is {0} the second number.: ",p2);
Console.ReadKey();

其他

"D:\Temp\WebDownload\Fir.doc"等价于@“D:\Temp\WebDownload\Fir.doc”
Unicode转义字符

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值