【问题标题】:Delegate with ref parameter带 ref 参数的委托
【发布时间】:2010-12-25 10:31:59
【问题描述】:

有没有办法在下面的代码中保持相同的功能,但不必创建委托?我正在与包含许多不同 DeleteSomethingX(ref IntPtr ptr) 方法的第 3 方 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);
    }
}

【问题讨论】:

  • 您到底想做什么?
  • 创建委托有什么问题?
  • 您确定第三方 API 不将空指针作为 NOP 处理吗?

标签: c# .net pointers delegates ref


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多