C#:在构造函数中通过引用传递或通过更新循环作为参数传递?

时间:2012-07-05 02:49:11

标签: c# parameter-passing pass-by-reference

我有一个对象,我需要在游戏循环的每次更新中更新数据(在C#中)。是否更好地将对象传递给执行更新循环的对象的构造函数,以便引用始终具有最新对象,

或者我应该将它作为参数正常传递给Update方法(每次更新都称为?)

所以这是一个构造函数:

public UpdatingObject(ref DataObject dataObject)

或者这是一个更新循环标题(默认情况下按值传递):

public void Update(DataObject dataObject)

2 个答案:

答案 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.
   }
}