我是一名经验丰富的C#开发人员,我刚开始问自己一些事情。
我已经在游戏开发中阅读了很多关于C ++和C#之间的差异。
几乎所有人都说C ++在游戏开发中更好,因为它可以通过指针直接访问内存。据我所知,如果使用不安全的密钥代码,C#也可以使用指针。
因此,这意味着C#也可以直接访问内存。然后问题再次出现,C ++指针和C#指针之间有什么区别?一个比另一个好吗?如果没有差异,为什么C ++会优于C#?
(根据我自己的经验,我知道我对C#垃圾收集有问题,所以我认为这可能是C ++首选的原因)
答案 0 :(得分:0)
我会说C#的弱点在于,给定一个void*
指针,你不能总是将它强制转换为MyStruct*
指针,当然你不能投它到MyStruct[]
或byte[]
(并且数组类型是.NET的基本类型之一,几乎无处不在)。这使得互操作非常困难和缓慢,因为通常您必须首先从void*
复制到新创建的MyStruct[]
,以便能够使用.NET中的数据。
另一种选择显然是使用C#中的指针(你可以这样做)并最小化数组[]
的使用,但语言不是为此而构建的。例如,通用子系统(List<T>
)不接受指针(您不能List<int*>
)。您可以清楚地使用IntPtr
...但是当您需要int*
时,必须将其强制转换为int*
...这很痛苦。