#1,150 – Generic Delegate Type as Parameter
July 31, 2014 Leave a comment
You can use a generic delegate type as a parameter to a method.
Suppose that we have the following type:
public delegate T Merger<T>(T thing1, T thing2);
We can now create a method that takes a constructed version of this type as a parameter. We could then call the method as shown in the Main method.
static void MergeInts(Merger<int> intMerger, int n1, int n2) { int result = intMerger(n1, n2); } public static int Add(int n1, int n2) { return n1 + n2; } static void Main(string[] args) { MergeInts(Add, 5, 6); }
We could also define a generic method that has a generic delegate parameter.
static void MergeSomething<T>(Merger<T> someMerger, T thing1, T thing2) { T result = someMerger(thing1, thing2); }
We can then call this method as follows:
public static Dog Breed(Dog mama, Dog papa) { return new Dog(mama.Name + papa.Name); } static void Main(string[] args) { MergeSomething(Add, 5, 6); Dog dog1 = new Dog("Lassie"); Dog dog2 = new Dog("Spuds"); MergeSomething(Breed, dog1, dog2); }