private static void SecondExample() { var calc1 = new DoCalculation(Show1); var calc2 = new DoCalculation(Show2); // Как очеред, первым скомбинирован - первым выполнится // Если возвращается значение, это значение будет того, кто выполнился последним var combine = (DoCalculation)Delegate.Combine(calc1, calc2); //DoCalculation combine = null; //combine += calc1; //(DoCalculation)Delegate.Combine(combine, calc1); //combine += calc2; //(DoCalculation)Delegate.Combine(combine, calc2); //combine -= calc2; //(DoCalculation)Delegate.Remove(combine, calc1); //// Если результатом оказывается пустой список вызова, возвращается null. //// Тут как раз это и происходит => combine is null !!!!!! //combine -= calc1; //(DoCalculation)Delegate.Remove(combine, calc1); Calc instance = new EngCalc(10); string s = combine((EngCalc)instance); Console.WriteLine(s); }
private static string Show2(EngCalc c) { return(c.SumDouble(1, 2).ToString(CultureInfo.InvariantCulture)); }