1

1 つの int を引数として取るデリゲート宣言があるとします。

public delegate void MyDelegate(int i);
private MyDelegate _myDelegate = null;

文字列とintを引数として取る関数があります

private MyFunc(string s, int i){
    ...
}

ここで、事前に文字列引数を指定し、int 引数を開いたままにして、MyFunc から MyDelegate を作成したいと思います。何かのようなもの:

_myDelegate = new MyDelegate(MyFunc("Hello", ?));

一方、?_myDelegate を呼び出すときに渡す必要があるまだ開いている引数をマークします。これが他の言語でも可能であることは知っています (たとえば、? 構文は Eiffel エージェントから来ています)。

C#でこれを行う方法は?

4

2 に答える 2

6

ラムダを使用できます。型は推測できるので、明示的に言う必要はありませんnew MyDelegate(...)

_myDelegate = i => MyFunc("Hello", i);
于 2013-10-17T22:15:56.723 に答える
3

ラムダ式を使用して、この種の部分関数アプリケーションを実現できます。

_myDelegate = new MyDelegate(i => MyFunc("Hello", i));

_myDelegateは typeであるためMyDelegate、ラムダを直接割り当てることもできます。

_myDelegate = i => MyFunc("Hello", i);
于 2013-10-17T22:16:31.573 に答える