Я совершенно сбиты с толку этой ошибки:не удается преобразовать из Func <T,T,T> в Func <T,T,T>
Cannot implicitly convert type 'System.Func<T,T,T> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll]' to 'System.Func<T,T,T> [c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll]' path\to\my\project\Operators.cs
типы идентичны, почему он даже пытается сделать бросок? Вот код:
public static class Operators<T>
{
private static Func<T,T,T> _add = null;
public static T Add<T>(T a, T b)
{
if (_add == null) {
var param1Expr = Expression.Parameter(typeof (T));
var param2Expr = Expression.Parameter(typeof (T));
var addExpr = Expression.Add(param1Expr, param2Expr);
var expr = Expression.Lambda<Func<T, T, T>>(addExpr, param1Expr, param2Expr);
_add = expr.Compile(); // <--- error occurs here
}
return _add.Invoke(a, b);
}
}
Вы должны были получить предупреждение об этом от компилятора. Не так ли? –
@EricLippert: Появилось предупреждение, но я мгновенно их отключил, поскольку я реорганизовал кучу вещей, и я получал слишком много предупреждений о неиспользуемых переменных. – mpen