should state machine have ability to add/remove

are state machines meant to be dynamic?
lets say i got deez:
c#
public class State<TArgs> 
{
  public event EventHandler<TArgs> OnEnter;

  public void Enter(object sender, TArgs e) 
  {
    OnEnter?.Invoke(sender, e);
  }

  public event EventHandler<TArgs> OnExit;

  public void Exit(object sender, TArgs e)
  {
    OnExit?.Invoke(sender, e);
  }
}

public class StateMachine<TArgs>
{
    private State<TArgs> _currentState;

    public State<TArgs> CurrentState
    {
        get
        {
            return _currentState;
        }
        set
        {

            if (_currentState != value)
            {
                if (_currentState is not null)
                {
                    _currentState.Exit(this, StateArguments);
                }
                
                value.Enter(this, StateArguments);

                _currentState = value;
            }

        }
    }

  //adding/removing omitted for brevity :trolol:
}
Was this page helpful?