1

まだデリゲートに頭を悩ませているので、興味があります。無名関数をオーバーロードすることは可能ですか?

そのような:

delegate void Output(string x, int y);

サポート:

Output show = (x, y) => Console.WriteLine("{0}: {1}", x.ToString(), y.ToString());

と:

delegate void Output(string x, string y);

許可:

show( "ABC", "EFG" );

と:

show( "ABC", 123 );
4

2 に答える 2

3

いいえ、そのようなデリゲートをオーバーロードすることはできません。

これはタイプです

delegate void Output(string x, int y);

これに変更します:

delegate void Output(string x, string y);

それを再定義します。

これは、同じ名前(同じ名前空間)で2つの異なるクラスを定義するようなものです。

于 2010-04-16T21:24:15.813 に答える
2

おそらくジェネリックデリゲートを使用できます。

public delegate void Output<T1,T2>(T1 x, T2 y);
于 2010-04-16T21:41:26.807 に答える