使用ref参数委派

有没有办法在下面的代码中保持相同的function,但无需创建委托? 我正在与包含许多各种DeleteSomethingX(ref IntPtr ptr)方法的第三方API接口,我正在尝试集中IntPtr.Zero检查的代码。

private void delegate CleanupDelegate(ref IntPtr ptr); ... private void Cleanup(ref IntPtr ptr, CleanupDelegate cleanup) { if (ptr != IntPtr.Zero) { cleanup(ref ptr); } } 

如果你的意思是没有声明委托类型,那么可能不是; 很少(如果有的话)内置代表使用ref ; 但你可以把它变成通用的:

 delegate void ActionRef(ref T value); 

我不确定这会节省多少。 这里可能还有一些使用扩展方法的技巧,但是如果没有更多细节则很难说清楚。