¿Por qué no se puede asignar un método anónimo a var?

Tengo el siguiente código:

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

Sin embargo, lo siguiente no se compila:

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

¿Por qué el compilador no puede entender que es unFunc<string, bool>? Toma un parámetro de cadena y devuelve un valor booleano. En cambio, me da el error:

No se puede asignar un método anónimo a una variable local tipada implícitamente.

Tengo una suposición y eso essi la versión var compilada, carecería de coherencia si tuviera lo siguiente:

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

Lo anterior no tendría sentido ya que Func <> permite solo hasta 4 argumentos (en .NET 3.5, que es lo que estoy usando). Quizás alguien podría aclarar el problema. Gracias.

Respuestas a la pregunta(7)

Su respuesta a la pregunta