Componente delegados multicast em c # - devo usar operadores ou Action.Combine?

Lendo a documentação, vejo que+ operador pode ser usado para compor / combinar delegados do mesmo tipo.

Da mesma forma, eu posso ver que eu posso remover um do delegado composto usando o- operador.

Eu também notei que oAction tipo tem estáticaCombine eRemove métodos que podem ser usados ​​para concatenar as listas de invocação de dois delegados e para remover a última ocorrência da lista de invocação de um delegado da lista de invocação de outro delegado, respectivamente.

        Action a = () => Debug.WriteLine("Invoke a");
        Action b = () => Debug.WriteLine("Invoke b");
        a += b;
        a.Invoke(); 

        //Invoke a
        //Invoke b

        Action c = () => Debug.WriteLine("Invoke c");
        Action d = () => Debug.WriteLine("Invoke d");
        Action e = Action.Combine(c, d);
        e.Invoke();

        //Invoke c
        //Invoke d

        a -= b;
        a.Invoke();

        //Invoke a

        e = Action.Remove(e, d);
        e.Invoke(); 

        //Invoke c

Eles parecem produzir os mesmos resultados em termos de como eles combinam / removem da lista de invocação.

Eu vi os dois modos usados ​​em vários exemplos em SO e em outro código. Existe uma razão pela qual eu deveria estar usando um caminho ou outro? Há algum buraco cai? Por exemplo - eu posso ver um aviso na linhaa -= b; declarando issoDelegate subtraction has unpredictable results - então devo evitar isso usando Remover?

questionAnswers(1)

yourAnswerToTheQuestion