假设我有一个委托声明,将一个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#中做到这一点?
你可以使用lambda.由于可以推断出类型,因此您无需明确说明new MyDelegate(...).
_myDelegate = i => MyFunc("Hello", i);
Run Code Online (Sandbox Code Playgroud)