gpt4 book ai didi

c# - 在内存中存储一​​个大对象还是在 C# 中只存储一个指向它的指针?

转载 作者:行者123 更新时间:2023-11-30 14:23:52 25 4
gpt4 key购买 nike

struct Tile
{
GameObject go;
... //more fields

public Tile(GameObject g, Object s)
{
go = g;
...
}
}
Tile[,] tilemap = new Tile[1000,1000]

Tile 结构由一个 GameObject(场景/内存中已有的 Unity 引擎游戏内对象)和其他字段组成。考虑到我要存储一百万个,它可能会占用大量内存。

我对 C# 中的指针没有太多经验。

将指向 GameObject 的指针存储在结构中是否明智?

struct Tile
{
GameObject* go;
...
}

最佳答案

引用在 C# 中已经是一个指针(底层)。它不是某个对象的副本。在您的第一个代码片段中,“go”实际上是指向实际对象的指针。你在担心一些不真实的事情。

ref(例如“go”)和不安全指针之间的一个区别是 ref 可以移动,GC 可以并且将(当它感觉如此时)四处移动对象(并自动更改 refs)。

所以这里没有问题,只是一种不正确的看法。

关于c# - 在内存中存储一​​个大对象还是在 C# 中只存储一个指向它的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com