Golo Roden erwähnte es bereits in den Kommentaren, daher möchte ich noch mal genauer darauf eingehen.
Dazu erstelle ich eine Solution in Visual Studio 2010 mit einer Konsolenapplikation, welche ich „DefaultValues“ nenne. C#4.0 – Problematik bei Default Values weiterlesen
Schlagwort: default values
C# 4.0 – Default Values und Delegates
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.