【问题标题】:C++ pointer vs C# pointer [closed]C++ 指针与 C# 指针 [关闭]
【发布时间】:2018-05-22 08:54:43
【问题描述】:

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

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

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

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

(根据我自己的经验,我知道我在使用 C# 垃圾收集时遇到了问题,所以我认为这可能是首选 C++ 的原因)

【问题讨论】:

  • 与语言和环境之间的其他差异相比,这是一件非常微小的事情。简短的回答:C# 中的原始指针与 C++ 并没有真正的不同。但这并不能真正解释这两者之间的差异。而且这是一个非常广泛的解释,所以它不适合这个网站。
  • 更好更喜欢?这些术语太主观了。 C# 为它构建了一些很棒的游戏引擎。虽然如果我从事游戏编程,我肯定会选择 C ​​和汇编,但是我很守旧。
  • 你做过研究吗? Click.
  • @Bathsheba 大会?真的吗?但是,您需要使用所有这些特定于架构的指令自己实现 EVRYTHING。您需要为每个供应商的每一代 CPU 和 GPU 编写代码。 (或者接受你不能使用硬件加速并且游戏速度很慢)
  • Almost everyone said that C++ is better because it can directly access memory through a pointer 我差点把咖啡吐出来。我的意思是每个人都是谁,他们把什么分类得更好。他们使用什么指标,他们在编程什么,他们需要多长时间来开发它,人们管理和理解他们的代码有多容易。他们做了多少测试

标签: c# c++ pointers


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2018-05-27
    • 2017-05-29
    • 2012-09-26
    • 2012-07-21
    相关资源
    最近更新 更多