C# 我应该接受同一个对象作为参数并返回它,还是只接受它作为参数?

C# 我应该接受同一个对象作为参数并返回它,还是只接受它作为参数?,c#,.net,C#,.net,我有以下界面: public IStateMachineConfigurator { ??? Configure(StateMachine machine); } 在实现中,我调用了一些StateMachine方法来对其进行如下配置: machine.Configure(States.State1) .Allow(Triggers.Trigger1); 问题是,我可以依赖StateMachine对象是引用这一事实,还是应该使用返回值或像ref/out这样的返回参数 编辑:

我有以下界面:

public IStateMachineConfigurator
{
  ??? Configure(StateMachine machine);
}
在实现中,我调用了一些StateMachine方法来对其进行如下配置:

machine.Configure(States.State1)
       .Allow(Triggers.Trigger1);
问题是,我可以依赖StateMachine对象是引用这一事实,还是应该使用返回值或像ref/out这样的返回参数

编辑:

状态机本身来自一个库,因此我无法决定它的实现。

如果您想使用构建器模式,那么您可以有效地返回传入的可变状态。如果你想走那条路,这很好。这就是StringBuilder类如何在不同的注释jQuery上进行操作。它可以非常适合以紧凑和可读的方式构建对象。但是,这些对象应被指定为这样的对象。生成器对象,最好不要超出必要的范围。

是的,您可以依赖以下事实:
StateMachine
是一个对象引用。有些人可能会选择返回
bool
enum
,以向程序员提示
Configure
方法中发生了什么(即成功/失败/无更改等)。其他人可能会选择在出现问题时抛出异常

所有这些都是完全有效的,只是要注意将方法链接在一起的深度,例如:

machine.Configure().Allow().someMethod().someOtherMethod()


调试和跟踪变得很困难。

我宁愿创建一个
配置
对象并将其传递给
状态机
构造函数,而不是创建一个
配置
。这使得
StateMachine
类的用户清楚地知道,在使用它之前,他们必须为它提供有效的配置

class StateMachineConfiguration
{
    public IEnumerable<State> States { get; private set; }
    public IEnumerable<Trigger> Triggers { get; private set; }
}

class StateMachine
{
    public StateMachine(StateMachineConfiguration config) 
    {
         if(config == null)
              throw new ArgumentNullException();

         this.Configure(config.States);
         this.Allow(config.Triggers);
    }
}
类状态机配置
{
公共IEnumerable状态{get;private set;}
公共IEnumerable触发器{get;private set;}
}
类状态机
{
公共状态机(状态机配置配置)
{
if(config==null)
抛出新ArgumentNullException();
this.Configure(config.States);
this.Allow(config.Triggers);
}
}

状态机已使用生成器模式。我想介绍一个类,它将配置状态机所需的一切。状态机是一个类,不是吗?配置器的目的是注入一个类来配置允许的状态和触发器。我无法控制状态机的实现。它是一个库。然后它取决于StateMachine对象是什么。我的猜测是,如果您想返回引用以继续使用构建器模式(如第二个示例所示),那就没问题了。我无法控制状态机实现。这是一个库。这就是为什么我隐藏它并允许从外部组件进行配置。