如何使用部分预定义的参数创建委托?

use*_*931 1 c# delegates

假设我有一个委托声明,将一个int作为参数:

public delegate void MyDelegate(int i);
private MyDelegate _myDelegate = null;
Run Code Online (Sandbox Code Playgroud)

我有一些函数,它接受一个字符串和一个int作为参数

private MyFunc(string s, int i){
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想通过预先指定字符串参数但保持int参数打开来从MyFunc创建MyDelegate.就像是:

_myDelegate = new MyDelegate(MyFunc("Hello", ?));
Run Code Online (Sandbox Code Playgroud)

而?将标记在调用_myDelegate时需要传递的仍然打开的参数.我知道这在其他语言中是可行的(例如,?语法来自Eiffel代理).

如何在C#中做到这一点?

Tim*_* S. 6

你可以使用lambda.由于可以推断出类型,因此您无需明确说明new MyDelegate(...).

_myDelegate = i => MyFunc("Hello", i);
Run Code Online (Sandbox Code Playgroud)