Как этот тест выполняет запросы, являются ли они делегатами? Что такое Action?

#c# #ado.net

#c# #ado.net

Вопрос:

http://code.google.com/p/dapper-dot-net/source/browse/PerformanceTests.cs

Запутался, PerformanceTest.Run инициализирует список, добавляя тестовые объекты.

Как он на самом деле выполняет запрос?

Я предполагаю, что это строка:

 for (int i = 1; i <= iterations; i  )
{
    foreach (var test in this.OrderBy(ignore => rand.Next()))
    {
        test.Watch.Start();
        test.Iteration(i);
        test.Watch.Stop();
    }
}
  

test.iteration(i);

Но как? Является ли это делегатом?

Ответ №1:

Да, Action ключевым здесь является type. Action<T> это встроенный тип делегата, который не имеет возвращаемого значения и (в данном случае) принимает один параметр типа T . Iteration это свойство типа Action<int> , в котором тестовое действие хранится в Test объекте, а () operator просто вызывает метод с i параметром.

Ответ №2:

Да, Action<int> это делегат, который принимает целое число в качестве аргумента (в данном случае номер итерации).