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

时间:2020-07-23 06:53:22

标签: c# unity3d pass-by-reference

我坚持使用Unity一段时间,对计算机科学/性能管理一无所知。

现在,我学习了一些C ++的经验,对IO /性能/等方面有一些关注,例如“计算机工程”。

然后我回到原来的Unity项目,该项目根本不关心那些事情,并且发现像我在C ++项目中所做的那样,有ref(或out)关键字用于按引用调用

在“业务级别”上使用C#的ref(用于按引用调用)是否很常见?(可能是具有Unity的游戏公司?)

1 个答案:

答案 0 :(得分:3)

如果您来自C ++,那么您会想到需要传递引用,因为如果您不这样做,则整个对象都会被复制,并且很可能是 bad < sup>(tm)。

在C#中,类型是引用类型或值类型。引用类型通过引用自动传递。如果您传递一个类,则它可以是null,因此它必须已经是对实际类实例的 reference (或在C ++术语中是“指针” ,因为c ++中的引用不能为null)。

所有类都是引用类型。出于性能原因,您不需要refout。如果出于性能原因在ref上使用outstruct,那应该是一个线索,它应该是class

因此,在C#中使用refout并不常见。它仅在不使用它无法获得预期结果的地方谨慎使用。这些关键字并非出于性能考虑。