原生数据类型根据操作系统32位 64位的不同,用这个关键定义的数据大小也不一样。
比如 nint 在 Xamarin.iOS 中,是 native int(原生整数)的缩写。当设备是 Apple 发布的早期 32 位设备时,它等同于 Int32(32位整数),也即 C# 关键字 int。当设备是 64 位时,它等同于 Int64(64位整数) 。
除此之外 nfloat 在 32 位系统中为 C# 关键字 float 或者对应的变量类型 Single,在 64 位系统中为 C# 关键字 double 或者对应的变量类型 Double 。nuint 对应 UInt32 (uint) 和 UInt64 (ulong)。
因此在和跨平台类库转换的时候会出现需要强制转换的问题。因为 nint 可能是 Int64,Int32 的超集,所以 int 关键字或者说 Int32 类型可以直接隐式转换成 nint,但反过来,nint 要转换成 int 则必须使用显式转换。
int 和nint之间的转换nuint nfloat 也是一样的。
int可以隐士的转化成nint
nint必须显示的转化成int
nuint和nint无法进行算术用算