.net 5 神妙nuint,IntPtr居然可以+ - x ÷

.net 5新出了nuint和nint

看到这个消息,我的第一反应就是:

我的一个叫Ordinary的项目里面已经有了nint和unint了!!

官方这么一出,我的项目又得改了我的项目里凡是涉及指针操作的几乎都依赖于我自己实现的nint和unint QAQ!!

这是我实现的的unintOrdinary的unint

这是.net 5的nuint
.net 5的nuint
然后我奇迹地发现,这家伙的nuint居然能+ - x ÷还能<< >> | &
nuint的加运算
一下子提起了我的兴趣

要知道,我自己实现的nint可是要

转换成long!!才能实现 + - x ÷ 的!!!

我Ctrl+左键点进去了nint,跳转到了一个熟悉的页面

IntPtr!!

IntPtr什么时候可以数学运算了啊???

为了探究.net 5 NativeInt的神秘面纱,我新建了个项目:
.net 5 神妙nuint,IntPtr居然可以+ - x ÷_第1张图片
并用dnspy打开编译的程序集:
.net 5 神妙nuint,IntPtr居然可以+ - x ÷_第2张图片
看着直接用+ + - -操作的IntPtr,我懵逼了

回到vs,把nint改成了IntPtr:
.net 5 神妙nuint,IntPtr居然可以+ - x ÷_第3张图片
c#根本就不让我用这种方式操作IntPtr

这就是.net 5的力量吧

后来我发现,不光是IntPtr,int,long,short这些耳熟能详的类型也没有重载+ - x ÷的静态方法
看来dotnet是把nint算进基本类型里了,clr自己就支持,根本不需要什么重载

此篇文章写的时候使用的sdk是5.0.100-preview.7.20366.6

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