*重要な編集については終わりをご覧ください*
さまざまな理由で、私は次のようなものを持っています:
delegate void Task(QueueTask queueTask);
delegate void QueueTask(Task task);
Visual Studio Express 2008を使用すると、明示的なヘルプなしで関数でqueueTask()を呼び出して呼び出すかどうかを推測できないラムダ式を除いて、これは多かれ少なかれうまく機能します。
void MyTask(QueueTask queueTask)
{{
queueTask(qt => {}); // queueTaskで失敗します1つのパラメータを取りませんか?
}
ただし、これは機能します。
void MyTask(QueueTask queueTask)
{{
queueTask((QueueTask qt)=> {});
}
それは大きな問題ではなく、代わりにデリゲートを含む別のオブジェクトを渡すことでおそらく逃げることができることを私は知っていますが、それをスタンドとして機能させる方法があるかどうか興味がありましたか?
ありがとう。
*以下の重要な編集*
クラス'TaskPool2'を別のアセンブリに配置した場合にのみ、コンパイルエラーが発生するようです!?
名前空間テスト
{{
パブリッククラスTaskPool2
{{
パブリックデリゲートvoidQueueTask(タスクタスク);
パブリックデリゲートvoidTask(QueueTask queueTask);
public void Queue(Task task){}
}
}
名前空間MyApp
{{
クラスプログラム
{{
static void SomeFunc()
{{
Test.TaskPool2 taskPool = new Test.TaskPool2();
taskPool.Queue(queue => {Console.WriteLine( "A"); queue(q => Console.WriteLine( "C"));});
}
}
}
そのやや複雑なことを認めた!