Por que um método anônimo não pode ser atribuído a var?

Eu tenho o seguinte código:

Func<string, bool> comparer = delegate(string value) {
    return value != "0";
};

No entanto, o seguinte não é compilado:

var comparer = delegate(string value) {
    return value != "0";
};

Por que o compilador não pode descobrir que é umFunc<string, bool>? Ele pega um parâmetro de string e retorna um booleano. Em vez disso, ele me dá o erro:

Não é possível atribuir método anônimo a uma variável local de tipo implícito.

Eu tenho um palpite e é issose a versão var compilada, não teria consistência se eu tivesse o seguinte:

var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) {
    return false;
};

O exemplo acima não faria sentido, pois o Func <> permite apenas até 4 argumentos (no .NET 3.5, que é o que estou usando). Talvez alguém possa esclarecer o problema. Obrigado.

questionAnswers(7)

yourAnswerToTheQuestion