C++指针与 C# 指针
C++ pointer vs C# pointer
我是一个经验丰富的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*
......这是一种痛苦。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错