【发布时间】:2010-03-17 14:04:52
【问题描述】:
public object MethodName(ref float y)
{
//method
}
如何为这个方法定义一个 Func 委托?
【问题讨论】:
标签: c# c#-3.0 reference delegates func
public object MethodName(ref float y)
{
//method
}
如何为这个方法定义一个 Func 委托?
【问题讨论】:
标签: c# c#-3.0 reference delegates func
Func 无法做到这一点,但您可以为它定义一个自定义的delegate:
public delegate object MethodNameDelegate(ref float y);
使用示例:
public object MethodWithRefFloat(ref float y)
{
return null;
}
public void MethodCallThroughDelegate()
{
MethodNameDelegate myDelegate = MethodWithRefFloat;
float y = 0;
myDelegate(ref y);
}
【讨论】:
在 .NET 4+ 中,您还可以通过这种方式支持 ref 类型...
public delegate bool MyFuncExtension<in string, MyRefType, out Boolean>(string input, ref MyRefType refType);
【讨论】:
in 和 out 您正在展示的用于参数化代表的代表与共同与“逆变”有关,并且与 OP 所询问的内容无关。问题是关于可以通过引用接受参数的委托,而不是(通用)委托在其类型参数化方面的敏捷性。