Why can't an anonymous method be assigned to var?

У меня есть следующий код:

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

Однако следующее не компилируется:

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

Почему компилятор не может отобразить out это Func ? Он принимает один строковый параметр и возвращает логическое значение. Вместо этого появляется ошибка:

Невозможно назначить анонимный метод объекту implicitly-typed local variable.

I have one guess and that is if the var version compiled, it would lack consistency if I had the following:

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

The above wouldn't make sense since Func<> allows only up to 4 arguments (in .NET 3.5, which is what I am using). Perhaps someone could clarify the problem. Thanks.

136
задан BoltClock 17 March 2012 в 17:19
поделиться