Delegate.Remove with 4.2 updates changed behavior for combined delegate. It may be even better than was before, but it differs from Microsoft .Net.
public static class Program
public static void Main(string args)
Action a = A;
Action b = B;
Action c = C;
Action s = a + b + c + Console.WriteLine;
(s - (a + c))(); //ABC
public static void A()
public static void B()
public static void C()
Not sure, if it really needs to be fixed.
That clearly seems like a bug on the .NET side. I will check tomorrow what is the behaviour on windows.
Here is some information about it: https://confluence.jetbrains.com/plugins/servlet/mobile#content/view/42337747
Ok, thank you for the additional information. I will check the behaviour and implementation on .NET, and will fix it ASAP.
Thank you for the report!
Fixed with https://github.com/mono/mono/commit/20df1ab1ffbc1d937a8568ae80457669b740541c
I have checked this issue with latest mono master MonoFramework-MDK-18.104.22.1683.macos10.xamarin.universal_dcb167189d14e2b55ccd128bfc2b5e5483ea0808 and its working fine .
Now getting following expected output in console on implementing code mentioned in console project.
Screencast : http://www.screencast.com/t/V6cPcEjYWe
Full Environment Info: https://gist.github.com/Arpit360/7894b76414dafa05a21b
Hence closing this issue.
I have checked this issue latest C6SR1 Mono 22.214.171.124 and observed that on implementing attached code snippet in console App and getting expected output in console.
Environment Info: https://gist.github.com/Arpit360/2fd3b86736341972ac56