繁体   English   中英

使用ref参数委托

[英]Delegate with ref parameter

有没有办法在下面的代码中保持相同的功能,但无需创建委托? 我正在与包含许多各种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<T>(ref T value);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM