我有一个方法,我将在以下上下文中使用:
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)
都不是.回来吧:
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每次使用它时都必须创建一个新实例,因为它将成为新的用户对象.如果您尝试重用默认用户对象,最终将覆盖以前的用户对象,并最终对同一对象而不是单独的对象进行多次引用.