Делегат с касательно параметра

Там какой-либо путь состоит в том, чтобы поддержать ту же функциональность в коде ниже, но не имея необходимость создавать делегата? Я взаимодействую через интерфейс со сторонним API, который содержит много различных DeleteSomethingX (касательно IntPtr ptr) методы, и я пытаюсь централизовать код для IntPtr. Нулевая проверка.

private void delegate CleanupDelegate(ref IntPtr ptr);

...

private void Cleanup(ref IntPtr ptr, CleanupDelegate cleanup)
{
    if (ptr != IntPtr.Zero)
    {
        cleanup(ref ptr);
    }
}
11
задан abatishchev 7 February 2012 в 14:29
поделиться

1 ответ

Если вы имеете в виду без объявления типа делегата, то, вероятно, нет; очень немногие (если есть) встроенные делегаты используют ref ; но вы можете сделать его универсальным:

delegate void ActionRef<T>(ref T value);

Я не уверен, что это сильно сэкономит. Здесь могут быть также некоторые уловки с методами расширения, но об этом трудно сказать без более подробной информации.

10
ответ дан 3 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: