C ++指针vs C#指针

时间:2018-05-22 08:54:44

标签: c# c++ pointers

我是一名经验丰富的C#开发人员,我刚开始问自己一些事情。

我已经在游戏开发中阅读了很多关于C ++和C#之间的差异。

几乎所有人都说C ++在游戏开发中更好,因为它可以通过指针直接访问内存。据我所知,如果使用不安全的密钥代码,C#也可以使用指针。

因此,这意味着C#也可以直接访问内存。然后问题再次出现,C ++指针和C#指针之间有什么区别?一个比另一个好吗?如果没有差异,为什么C ++会优于C#?

(根据我自己的经验,我知道我对C#垃圾收集有问题,所以我认为这可能是C ++首选的原因)

1 个答案:

答案 0 :(得分:0)

我会说C#的弱点在于,给定一个void*指针,你不能总是将它强制转换为MyStruct*指针,当然你不能投它到MyStruct[]byte[](并且数组类型是.NET的基本类型之一,几乎无处不在)。这使得互操作非常困难和缓慢,因为通常您必须首先从void*复制到新创建的MyStruct[],以便能够使用.NET中的数据。

另一种选择显然是使用C#中的指针(你可以这样做)并最小化数组[]的使用,但语言不是为此而构建的。例如,通用子系统(List<T>)不接受指针(您不能List<int*>)。您可以清楚地使用IntPtr ...但是当您需要int*时,必须将其强制转换为int* ...这很痛苦。