.net中内置的byte*和IntPtr,可谓是用户体验极差
加不能加,减不能减,unsafe一大堆
.net 5新出的了个nint和nuint
他们的长度随平台而变,还可加可减,是作为指针替代品的大好材料
nint和nuint的区别在于他们的符号,nint有,nuint没有
指针当然无所谓,但是他的偏移需要。
newP=oldP+offset
如果offset是负数,那么nuint显然无法胜任
图中第一行:如果nuint成了指针,那么向nuint加的偏移要转换成nuint才能加的上,听起来好像没问题,但是把一个负偏移转换成非负再加上不觉得有点奇怪?
图中第二行:使nuint加上nint是不合法的,而nint加上nint完全没有问题
图中第三行:如果nint是指针,不光可以直接加偏移,还可以把Int直接隐式转换成nint,十分方便
依照.net把int作为天下int(arr.Length是int不是uint)的惯例,nint作为指针也是.net自己的style的,所以更本土化