nint和nuint,谁来当指针?

nint和nuint是替代指针的大好材料

.net中内置的byte*和IntPtr,可谓是用户体验极差

加不能加,减不能减,unsafe一大堆

.net 5新出的了个nintnuint

他们的长度随平台而变,还可加可减,是作为指针替代品的大好材料

nint和nuint的区别

nint和nuint的区别在于他们的符号,nint有,nuint没有

指针需要正负吗?

指针当然无所谓,但是他的偏移需要。

newP=oldP+offset

如果offset是负数,那么nuint显然无法胜任

为什么nint是指针的首选?

 

nint和nuint,谁来当指针?_第1张图片

图中第一行:如果nuint成了指针,那么向nuint加的偏移转换成nuint才能加的上,听起来好像没问题,但是把一个负偏移转换成非负再加上不觉得有点奇怪?

图中第二行:使nuint加上nint不合法的,而nint加上nint完全没有问题

图中第三行:如果nint是指针,不光可以直接加偏移,还可以把Int直接隐式转换nint十分方便

 

依照.net把int作为天下int(arr.Length是int不是uint)的惯例,nint作为指针也是.net自己的style的,所以更本土化

 

 

你可能感兴趣的:(指针,.net,c#)