Mit C# 4.0 gibt es sogenannte Default Values. Das heißt, ich kann den Parametern bei einem Methodenaufruf bereits definierte Werte mitgeben.
Beispiel:
void Foobar(string valueWithoutDefaultValue, string valueWithDefaultValue = "Ich bin ein Default Value") { // .. }
Ich kann den 2. Parameter nun mit geben oder es eben sein lassen. Mehr dazu findet ihr hier. Nun wollte ich dies bei einem Delegaten ausnutzen. Der Delegate feuert nur mit einem Parameter, die Methode hat aber zwei Parameter, wobei der zweite einen Defaultwert hat.
public delegate void DelegateFoobar(string text); public event DelegateFoobar foobarEvent;
Dies funktioniert nicht, der Compiler spuckt folgende Fehlermeldung:
No overload for 'Foobar' matches delegate 'TestApp.Classes.Test.foobarEvent'
Schade eigentlich, denn meiner Interpretation nach sollte es funktionieren. Gelöst habe ich es mit eine Lambda Expression:
testclass.foobarEvent += str => this.Foobar(str);
Funktioniert ohne Probleme.