以下のコードで同じ機能を維持する方法はありますが、デリゲートを作成する必要はありませんか? 多数のさまざまな 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);
}
}