public static int Remove_FromNullToDelegate(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); // null - dlg1 = null var dlg = (IntRefDelegate)Delegate.Remove(null, dlg1); var v = value; dlg?.Invoke(ref v); return(v); }
public static int Remove_FromNullToMulticastDelegate(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); var dlg2 = new IntRefDelegate(IntRefImpl2); var dlgA = dlg1 + dlg2; // null - (dlg1 + dlg2) = null var dlg = (IntRefDelegate)Delegate.Remove(null, dlgA); var v = value; dlg?.Invoke(ref v); return(v); }
public static int Remove_DelegateMiddle(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); var dlg2 = new IntRefDelegate(IntRefImpl2); var dlg3 = new IntRefDelegate(IntRefImpl3); var dlgA = dlg1 + dlg2; dlgA += dlg3; // (dlg1 + dlg2 + dlg3) - dlg2 = (dlg1 + dlg3) var dlg = (IntRefDelegate)Delegate.Remove(dlgA, dlg2); var v = value; dlg?.Invoke(ref v); return(v); }
public static int Remove_DelegateInstance(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); var dlg2 = new IntRefDelegate(IntRefImpl2); var dlgA = dlg1 + dlg2; dlgA += dlg1; // Remove only a tail delegate. // (dlg1 + dlg2 + dlg1) - dlg1 = (dlg1 + dlg2) var dlg = (IntRefDelegate)Delegate.Remove(dlgA, dlg1); var v = value; dlg?.Invoke(ref v); return(v); }
public static int Remove_NotContainsMulticastDelegate(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); var dlg2 = new IntRefDelegate(IntRefImpl2); var dlg3 = new IntRefDelegate(IntRefImpl3); var dlgA = dlg1 + dlg2; dlgA += dlg3; var dlgB = dlg2 + dlg1; // (dlg1 + dlg2 + dlg3) - (dlg2 + dlg1) = (dlg1 + dlg2 + dlg3) var dlg = (IntRefDelegate)Delegate.Remove(dlgA, dlgB); var v = value; dlg?.Invoke(ref v); return(v); }
public static int Remove_EntireMatchedMulticastDelegate(int value) { var dlg1 = new IntRefDelegate(IntRefImpl1); var dlg2 = new IntRefDelegate(IntRefImpl2); var dlg3 = new IntRefDelegate(IntRefImpl3); var dlgA = dlg1 + dlg2; dlgA += dlg3; var dlgB = dlg1 + dlg2; dlgB += dlg3; // (dlg1 + dlg2 + dlg3) - (dlg1 + dlg2 + dlg3) = null var dlg = (IntRefDelegate)Delegate.Remove(dlgA, dlgB); var v = value; dlg?.Invoke(ref v); return(v); }