在c#中,我们可以通过各种方式创建委托(例如Action <>,Func <>,delegate,lambdas等).但是当您调用这些方法时,您必须为要调用的委托提供参数值:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5);
Run Code Online (Sandbox Code Playgroud)
c#中是否有一种方法可以封装方法委托WITH参数值?本质上是延迟调用完全参数化的方法?所以你不必在调用时提供参数值?
例如,这样的无效代码:
delegate int del(int i);
del myDelegate(5) = x => x * x;
int j = myDelegate;
Run Code Online (Sandbox Code Playgroud)
我知道用例并不是很明显.在我正在查看的情况下,我有一个非确定性方法,我希望调用者能够调用而不必包含或了解方法所需的参数.实现此目的的一种方法是通过创建一个封装参数值和方法委托的类,并让调用者引用和调用该类.但我只是好奇是否有另一种更简洁的方式.
SLa*_*aks 12
这称为currying.
例如:
Action curried = () => myFunc(5);
Run Code Online (Sandbox Code Playgroud)
要么,
Func<int, int, int> multiplier = (x, y) => x * y;
Func<int, int> doubler = x => multiplier(x, 2);
int eight = doubler(4);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1677 次 |
| 最近记录: |