原生数据类型根据操作系统32位 64位的不同,用这个关键定义的数据大小也不一样。

比如 nint 在 Xamarin.iOS 中,是 native int(原生整数)的缩写。当设备是 Apple 发布的早期 32 位设备时,它等同于 Int32(32位整数),也即 C# 关键字 int。当设备是 64 位时,它等同于 Int64(64位整数) 。

除此之外 nfloat 在 32 位系统中为 C# 关键字 float 或者对应的变量类型 Single,在 64 位系统中为 C# 关键字 double 或者对应的变量类型 Doublenuint 对应 UInt32 (uint) 和 UInt64 (ulong)。

因此在和跨平台类库转换的时候会出现需要强制转换的问题。因为 nint 可能是 Int64Int32 的超集,所以 int 关键字或者说 Int32 类型可以直接隐式转换成 nint,但反过来,nint 要转换成 int 则必须使用显式转换。

 

int 和nint之间的转换nuint nfloat 也是一样的。

int可以隐士的转化成nint

nint必须显示的转化成int

nuint和nint无法进行算术用算

原生数据类型 nint,nuint,nfloat_ios