在 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 都是引用类型。出于性能原因,您永远不需要 ref
或 out
。如果您发现自己出于性能原因在 struct
上使用 ref
或 out
,这应该是您应该使用 class
的线索。
所以不,在 C# 中使用 ref
或 out
根本不是 common。它仅在没有它的情况下无法获得所需结果的地方谨慎使用。这些关键字不是为了性能考虑。
我在 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 都是引用类型。出于性能原因,您永远不需要 ref
或 out
。如果您发现自己出于性能原因在 struct
上使用 ref
或 out
,这应该是您应该使用 class
的线索。
所以不,在 C# 中使用 ref
或 out
根本不是 common。它仅在没有它的情况下无法获得所需结果的地方谨慎使用。这些关键字不是为了性能考虑。