Delegate with ref parameter
Question
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);
}
}
Solution
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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow