Zamieszanie nad delegatem `Action` i wyrażeniami lambda

private void StringAction(string aString) // method to be called
{
    return;
}

private void TestDelegateStatement1() // doesn't work
{
    var stringAction = new System.Action(StringAction("a string"));
    // Error: "Method expected"
}

private void TestDelegateStatement2() // doesn't work
{
    var stringAction = new System.Action(param => StringAction("a string"));
    // Error: "System.Argument doesn't take 1 arguments"

    stringAction();
}

private void TestDelegateStatement3() // this is ok
{
    var stringAction = new System.Action(StringActionCaller);

    stringAction();
}

private void StringActionCaller()
{
    StringAction("a string");
}

Nie rozumiem dlaczegoTestDelegateStatement3 działa, aleTestDelegateStatement1 zawodzi. W obu przypadkach,Action jest dostarczany z metodą, która pobiera zero parametrów. Oni mogąpołączenie metoda, która pobiera pojedynczy parametr (aString), ale to nie powinno mieć znaczenia. Nie przyjmują parametru. Czy to nie jest możliwe w przypadku wyrażeń lamda, czy robię coś złego?

questionAnswers(4)

yourAnswerToTheQuestion