Is there any way to maintain the same functionality in the code below, but without having to create the delegate? I'm interfacing with a 3rd-party API that contains a number of various DeleteSomethingX(ref IntPtr ptr) methods and I'm trying to centralize the code for the IntPtr.Zero check.
private void delegate CleanupDelegate(ref IntPtr ptr);
...
private void Cleanup(ref IntPtr ptr, CleanupDelegate cleanup)
{
if (ptr != IntPtr.Zero)
{
cleanup(ref ptr);
}
}
If you mean without declaring the delegate type, then probably not; very few (if any) inbuilt delegates use ref
; but you could make it generic:
delegate void ActionRef<T>(ref T value);
I'm not sure this saves much though. There may also be some tricks here with extension methods, but it is hard to tell without more detail.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With