我想用另一个对象更新一个对象,如下所示:
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)
或者“原始”对象是否会在不需要参考的情况下进行更新?
答案 0 :(得分:3)
这取决于用户是struct
还是class
。类通过引用传递,这意味着如果User是一个类,则不需要ref
关键字来更新原始对象。结构按值传递,这意味着如果要更新结构,则需要使用ref
。
答案 1 :(得分:2)
如果User
是一个类,则不需要ref
关键字,因为类是引用类型。如果使用ref
, 实际上是行为的细微差别,但在您的情况下,由于您没有修改变量,因此没有必要;而是你正在修改它所引用的对象的属性。
答案 2 :(得分:0)
ref
不是必需的(假设User
是一个类)。