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.