我需要这个方法的ref关键字吗?

时间:2010-12-30 17:10:23

标签: c#

我想用另一个对象更新一个对象,如下所示:

User updatingUser = Users.Get(someId);

updatingUser.Name = otherUser.Name;
updatingUser.Age = otherUser.Age;

现在我想创建一个方法来执行此更新,我是否需要参数列表中的引用?

public static void UpdateUserFromUser(User original, User other)
{
  original.Name = other.Name;
  original.Age = other.Age;
  ..
  ..

}

现在传入的'原始'用户在设置的对象上具有属性,并且不会更新,因此此用户对象会更新某些属性。

我需要一个参考更正,比如:

public static void UpdateUserFromUser(ref User original, User other)

或者“原始”对象是否会在不需要参考的情况下进行更新?

3 个答案:

答案 0 :(得分:3)

这取决于用户是struct还是class。类通过引用传递,这意味着如果User是一个类,则不需要ref关键字来更新原始对象。结构按值传递,这意味着如果要更新结构,则需要使用ref

答案 1 :(得分:2)

如果User是一个类,则不需要ref关键字,因为类是引用类型。如果使用ref 实际上是行为的细微差别,但在您的情况下,由于您没有修改变量,因此没有必要;而是你正在修改它所引用的对象的属性。

答案 2 :(得分:0)

ref不是必需的(假设User是一个类)。