Looking for c# Keywords? Try Ask4Keywords

C# Language Методы расширения для цепочки


пример

Когда метод расширения возвращает значение , которое имеет тот же тип , как this аргумент, он может быть использован для «цепи» один или более вызовов метода совместимой подписи. Это может быть полезно для запечатанных и / или примитивных типов и позволяет создавать так называемые «свободные» API, если имена методов читаются как естественный человеческий язык.

void Main()
{
    int result = 5.Increment().Decrement().Increment(); 
    // result is now 6
}

public static class IntExtensions 
{
    public static int Increment(this int number) {
        return ++number;
    }

    public static int Decrement(this int number) {
        return --number;
    }
}

Или как это

void Main()
{
    int[] ints = new[] { 1, 2, 3, 4, 5, 6};
    int[] a = ints.WhereEven();
    //a is { 2, 4, 6 };
    int[] b = ints.WhereEven().WhereGreaterThan(2);
    //b is { 4, 6 };
}

public static class IntArrayExtensions
{
    public static int[] WhereEven(this int[] array)
    {
        //Enumerable.* extension methods use a fluent approach
        return array.Where(i => (i%2) == 0).ToArray();
    }

    public static int[] WhereGreaterThan(this int[] array, int value)
    {
        return array.Where(i => i > value).ToArray();
    }
}