En C#, comment créer un type de délégué qui mappe les types de délégué à un type de délégué? En particulier, dans mon exemple ci-dessous, je souhaite déclarer un délégué Sum
tel que (empruntant à la notation mathématique) Sum(f,g) = f + g
. Je veux ensuite appeler Sum(f,g)
- tel que Sum(f,g)(5)
[cela signifie f(5) + g(5)
].C#: comment créer un type de délégué à partir de types de délégué?
class Example
{
delegate int IntToInt (int i) ;
public static int Double (int i) { return i * 2 ; }
public static int Square (int i) { return i * i ; }
delegate IntToInt IntToIntPair_To_IntToInt (IntToInt f, IntToInt g) ;
public static IntToInt Sum (IntToInt f, IntToInt, g) { return f + g ; }
public static void Main ()
{
IntToInt DoubleInstance = Double ;
IntToInt SquareInstance = Square ;
IntToIntPair_To_IntToInt SumInstance = Sum ;
System.Console.WriteLine
(SumInstance (DoubleInstance, SquareInstance) (5)) ;
// should print 35 = 10 + 25 = Double(5) + Square(5)
}
}
Bon sang, vous obtenez une phrase d'une réponse et bam, skeeted encore. –
Jon: Mon logiciel est un peu daté. Est-ce important que j'utilise CLR Version 2.0.50727.42? – JaysonFix
@JaysonFix: Oui, malheureusement, la syntaxe lambda (x => x * 2 par exemple) et les types de délégués Func sont des constructions C# 3/.NET3.5. Faire cela dans .NET2.0 et C# 2 demandera plus d'efforts. –