优雅地设计一个具有2个重载的方法,一个接受另一个没有的对象

mrb*_*lah 0 c# oop

我需要设计一个可以将对象作为参数的方法,如果没有,那么方法必须自己创建一个新对象.

这是一个很好的方法吗?

public void Method1(int companyId, int userId, int clientId)
{
     Method1(null, companyId, userId, clientId);
}
public void Method1(SpecialObject o, int companyId)
{
      if(o == null)
          o = new SpecialObject(userId, clientId);


}
Run Code Online (Sandbox Code Playgroud)

Mic*_*tta 5

扩展丹尼尔的答案,我经常使用这种模式:

public void Method1(int companyId, int userId, int clientId)
{
     Method1(new SpecialObject(userId, clientId), companyId);
}

public void Method1(SpecialObject o, int companyId)
{
    // if needed
    if (o == null)
    {
        throw new ArgumentNullException("o")
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)