Как уже говорили, функции C # 3.0 можно использовать при настройке среды выполнения .NET 2.0 с помощью компилятора C # 3.0.
Малоизвестный факт, связанный с этим, заключается в том, что вы даже можете использовать LINQ с .NET2.0, если вы предоставите свою собственную реализацию LINQ.
Вот пример, который включает операторы 'select' и 'where':
namespace System.Runtime.CompilerServices
{
// defining this attribute allows using extension methods with .NET 2.0
[AttributeUsage(AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute {}
}
namespace System
{
public delegate R Func<A, R>(A arg0);
}
namespace System.Linq
{
public static class Enumerable
{
public static IEnumerable<R> Select<T, R>(this IEnumerable<T> input, Func<T, R> f)
{
foreach (T element in input)
yield return f(element);
}
public static IEnumerable<T> Where<T>(this IEnumerable<T> input, Func<T, bool> f)
{
foreach (T element in input) {
if (f(element))
yield return element;
}
}
}
Вы можете отправить Mono-версию System.Core вместе с вашим приложениемесли вы хотите в полной мере использовать LINQ в .NET 2.0.