Looking for c# Keywords? Try Ask4Keywords

C# Language Задний ход


пример

  • Инвертирует порядок элементов в последовательности.
  • Если нет элементов, вызывается ArgumentNullException: source is null.

Пример:

// Create an array.
int[] array = { 1, 2, 3, 4 };                         //Output:
// Call reverse extension method on the array.        //4
var reverse = array.Reverse();                        //3
// Write contents of array to screen.                 //2
foreach (int value in reverse)                        //1
    Console.WriteLine(value);

Пример живого кода

Помните, что Reverse() может работать в зависимости от последовательности цепочек ваших операторов LINQ.

        //Create List of chars
        List<int> integerlist = new List<int>() { 1, 2, 3, 4, 5, 6 };

        //Reversing the list then taking the two first elements
        IEnumerable<int> reverseFirst = integerlist.Reverse<int>().Take(2);
        
        //Taking 2 elements and then reversing only thos two
        IEnumerable<int> reverseLast = integerlist.Take(2).Reverse();
        
        //reverseFirst output: 6, 5
        //reverseLast output:  2, 1

Пример живого кода

Реверс () работает путем буферизации всего, а затем проходит через него назад, whitch не очень эффективен, но ни один OrderBy с этой точки зрения.

В LINQ-to-Objects выполняются операции буферизации (Reverse, OrderBy, GroupBy и т. Д.) И операции без буферизации (Where, Take, Skip и т. Д.).

Пример: Non-buffering Обратное расширение

public static IEnumerable<T> Reverse<T>(this IList<T> list) {
    for (int i = list.Count - 1; i >= 0; i--) 
        yield return list[i];
}

Пример живого кода

Этот метод может столкнуться с проблемами, если и мутировать список во время итерации.