【发布时间】:2011-12-30 13:52:22
【问题描述】:
有时我会遇到必须将方法附加到委托但签名不匹配的情况,例如尝试将 abc 附加到某个字符串参数为“hi”的委托。
public class test
{
//...
public void abc(int i, string x)
{
//Do Something
}
//...
}
public class test2
{
somedelegate x;
//...
public test2()
{
//Do Something
test y = new test();
x += y.abc(,"hi");
}
delegate void somedelegate(int i);
}
我可以通过创建另一个具有正确签名的委托然后附加它来解决这个问题,但这似乎过于复杂。你能在 C# 中做这样的事情吗?谢谢。
编辑:我想最接近我想要实现的是:
x += (int i) => abc(i, "hi");
【问题讨论】:
-
我认为你应该重新考虑你想要做什么。您正在尝试调用没有所有必需参数的方法?考虑所有的影响,不正确的结果,错误等。而是使用方法重载或实现Command Pattern重新设计你的类
-
这称为柯里化,通常在函数式编程和模块化编程中非常有用。 stackoverflow.com/questions/36314/what-is-currying
标签: c# parameters delegates