我有一个对象,我需要在游戏循环的每次更新中更新数据(在C#中)。是否更好地将对象传递给执行更新循环的对象的构造函数,以便引用始终具有最新对象,
或者我应该将它作为参数正常传递给Update方法(每次更新都称为?)
所以这是一个构造函数:
public UpdatingObject(ref DataObject dataObject)
或者这是一个更新循环标题(默认情况下按值传递):
public void Update(DataObject dataObject)
答案 0 :(得分:2)
在需要时通过引用传递,即,当您需要重新分配引用以引用其他对象时:
void ByRef(ref object o)
{
o = new object();
}
如果方法保证设置o
,则将其作为out
参数传递。
默认语义(通过引用副本传递)适合大多数需要,因为您通常只修改对象上的字段/属性。
如果参数是值类型,那么您需要使用ref
以调用者看到的方式改变参数。
我的问题是;你为什么要改变构造函数的参数?这对我来说有点奇怪。
答案 1 :(得分:2)
必要时通过引用传递。
但是,您是否可以在DataObject类中定义更新方法并定义另一个复合类来执行更新?类似的东西。
public class DataObject
{
public void Update()
{
// define your update method.
}
}