0

Следующий код не компилируется на Compact Framework 2 (VS2008)код не компилируется на Compact Framework

public delegate TResult Func<out TResult>(); 
public delegate TResult Func<in T, out TResult>(T a); 
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2); 
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3); 
public delegate TResult Func<in T1, in T2, in T3, in T4, out TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); 

Я не уверен, что код автор имел в виду, чтобы сделать, и мне нужно знаете, как это сделать.

Доп информация: Этот код пришел из источника LinqBridge «s

Благодаря

ответ

0

Код только определения различных Func делегатов, которые еще не были определены в .NET 2.0,

Попробуйте принимать out in и out, так как они не поддерживаются в .NET 2.0:

public delegate TResult Func<TResult>(); 
public delegate TResult Func<T, TResult>(T a); 
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2); 
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3); 
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); 
+0

Привет, Стэнли. Знаете ли вы последствия отказа от этих модификаторов? – MiguelPragier

+0

В .NET 4.0 и более поздних версиях интерфейсы не были бы [ковариантными или контравариантными] (https://msdn.microsoft.com/en-us/library/dd799517 (v = vs.100) .aspx). –