在 C# 中使用 'ref' 或 'out' 常见做法

Is using 'ref' or 'out' common practice in C#

我在 Unity 上坚持了一段时间,对计算机 Science/Performance 管理了解不多。

现在,我获得了一些 C++ 经验,对 IO/performance/etc 一些“计算机工程”的东西有些担忧。

然后我回到我的旧 Unity 项目,它根本不关心那些事情,并发现有 ref(or out) 关键字用于按引用调用,正如我可以在我的C++ 项目。

在 'business level' 上使用 C# 的 ref(用于按引用调用目的)是否很常见?(也许是使用 Unity 的游戏公司?)

如果您来自 C++,那么您的脑海中就会想到您需要传递引用,因为如果您不这样做,整个对象将被复制,这很可能是 不好的 (tm).

在 C# 中,类型要么是引用类型,要么是值类型。引用类型 通过引用自动传递 。如果你传递一个class,它可以是null,所以它必须已经是对实际[的引用 =40=] 实例(或 C++ 术语中的“指针”,因为 C++ 中的引用不能是 null)。

所有 class 都是引用类型。出于性能原因,您永远不需要 refout。如果您发现自己出于性能原因在 struct 上使用 refout,这应该是您应该使用 class 的线索。

所以不,在 C# 中使用 refout 根本不是 common。它仅在没有它的情况下无法获得所需结果的地方谨慎使用。这些关键字不是为了性能考虑。