Optionale Parameter ist eine Sprachfunktion, der Compiler ist für das Übersetzen der Aufrufe von Methoden mit optionalen Parametern zum vollständigen Aufruf mit Werten verantwortlich.
Blick auf diese einfache Stück Code unten,
public void GeneralMethod()
{
TestMethod(6);
}
public bool TestMethod(int a, int b = 8)
{
return true;
}
Wenn Sie diese Methoden zu zerlegen, werden Sie sehen, dass der C# -Compiler den Anruf tatsächlich zu Testmethod mit einem Parameter auf einen Anruf mit den beiden Parametern ersetzt. Der Screenshot von ildasm beweist, dass
Nun, um aktuelles Problem kommt, wird die Codezeile in Frage eine Func mit einem Verfahren zu binden versuchen, die optionalen Parameter hat. Wenn der C# -Compiler damit umgehen muss, muss er sicherstellen, dass der Func einige die Standardwerte kennt. Während dies durch Compiler hätte erreicht werden können, vereitelt es vollständig den Zweck von Func.
Zweck von Func bietet eine Möglichkeit, anonyme Methoden in einer verallgemeinerten und einfachen Weise zu speichern. "reference
Eine weitere ähnliche Frage in Stackoverflow kann einen Parameter und ruft die TryMethod aus dem Körper dieser anonymen Methode gefunden werden here
@ Chris Sinclair-Lösung, indem eine anonyme Methode, um dies funktioniert, die.
Nur so verstehe ich, mit 'Func tryMethodFunc => (Wert) => TryMethod (Wert)' ist nicht ausreichend? –
Hmmm, das funktioniert. Raten Sie, ich bin nur neu zu funktionalen Ansätze das als Antwort und ich werde es markieren. – Firestrand
Fühlen Sie sich frei, KeYans Antwort zu markieren; Es ist ziemlich umfassend und enthält meine Problemumgehung. –