C++指针与 C# 指针

C++ pointer vs C# pointer

本文关键字:指针 C++      更新时间:2023-10-16

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

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

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

因此,这意味着 C# 也可以直接访问内存。然后问题又来了,C++指针和 C# 指针有什么区别?一个比另一个更好吗?如果没有差异,为什么C++会比 C# 更好?

(我从自己的经验中知道我在 C# 垃圾回收方面遇到了问题,所以我认为这可能是首选C++的原因(

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

替代方案显然是在 C# 中使用指针到处工作(您可能可以做到(并最大限度地减少数组的使用[],但这些语言不是为此而构建的。例如,泛型子系统 (List<T>( 不接受指针(您无法List<int*>(。您可以清楚地使用IntPtr...但是当你需要int*时,你必须把它投射到int*......这是一种痛苦。