Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

код с лямбда выражениями

8.3K
26 марта 2012 года
roman@
63 / / 10.11.2007
Помогите пожалуйста понять код

using System;
class Program {
private static void WriteIf(int v, Func<int, bool> test) {
if (test(v)) {
Console.Write(v);
}
}
public static void Main(string[] args) {
WriteIf(7, t => t > 10);
WriteIf(4, t => t * 2 > 5);
WriteIf(9, x => !false);
}
}



и второй код


using System;
class Program {
private static void M<A, B, C>(A v, Func<A, B> f1, Func<B, C> f2){
Console.WriteLine(typeof(C));
}
public static void Main(string[] args) {
M(7.0, v => new[] { v }, v => v[0]);
}
}
10K
26 марта 2012 года
Cybernetic
106 / / 22.07.2009
Код:
using System;
calss Program
{
    private static void WriteIf(int v, Func<int, bool> test)
    {
        if (test(v))
        {
            Console.Write(v);
        }      
    }

    public static void Main(string[] args)
    {
        WriteIf(7, t => t > 10);
        WriteIf(4, t => t * 2 > 5);
        WriteIf(9, x => !false);
    }
}



и второй код


using System;
class Program
{
    private static void M<A, B, C>(A v, Func<A, B> f1, Func<B, C> f2)
    {
        Console.WriteLine(typeof(C));
    }

    public static void Main(string[] args)
    {
        M(7.0, v => new[] { v }, v => v[0]);
    }
}
О Func.
Выражение Func<int, bool> test означает, что этот параметр принимает функцию с параметром типа int и выдает результат типа bool.
Выражение вроде "t => t > 10" обозначает функцию, что написана справа от знака "=>" с параметром, что написан слева от знака "=>".
Я не знаю глубинных дотнетовских процессов, знаю, что надо копать в сторону анонимных методов (кои здесь и используются). Я просто привык читать такие выражения так: "на вход поступает переменная, обозначим ее t, и сделаем с ней то, что написано справа: t > 10".

Ну а во второй программе уже какое-то извращение. Единственное, что мне не понятно, это что за запись такая: void M<A, B, C>. А в остальном этот пример можно читать также, как и предыдущий.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог