帮助设计一个方法,我应该使用out还是ref或返回类型?

Bla*_*man 0 c# asp.net

我有一个方法,我将在以下上下文中使用:

1.

用户user = null;

if(...)
{
      user = defaultUser;
      SetUser(a,b,user);
}
else
{
      SetUser(a,b,user);
}

SaveUser(user);
Run Code Online (Sandbox Code Playgroud)

因此,某些情况下用户可能为null,而在其他情况下,它已经初始化.

我该如何设计SetUser方法?

我目前有这样的情况,但是当用户为空时,这会导致错误.

public void SetUser(object a, object b, User user)
{
     if(user == null)
         user = new User();

     user.Security = a.security;
     user.Blah = b.type;
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 6

都不是.回来吧:

public User SetUser(object a, object b, User user) {
  if (user == null) {
     user = new User();
  }
  user.Security = a.security;
  user.Blah = b.type;
  return user;
}
Run Code Online (Sandbox Code Playgroud)

发送用户对象或null,并将结果分配给引用:

User user;
if(...) {
  user = SetUser(a, b, defaultUser);
} else {
  user = SetUser(a, b, null);
}
SaveUser(user);
Run Code Online (Sandbox Code Playgroud)

请注意,defaultUser每次使用它时都必须创建一个新实例,因为它将成为新的用户对象.如果您尝试重用默认用户对象,最终将覆盖以前的用户对象,并最终对同一对象而不是单独的对象进行多次引用.