Что такое эквивалент C# Java 8 java.util.function.Consumer<>?

Есть ли эквивалент этого интерфейса в C#?

Пример:

Consumer<Byte> consumer = new Consumer<>();
consumer.accept(data[11]);

Я искал вокруг Func<> а также Action<> но я понятия не имею.

Оригинальный код Java Consumer.accept() Интерфейс довольно прост. Но не для меня:

void accept(T t);

/**
* Returns a composed {@code Consumer} that performs, in sequence, this
* operation followed by the {@code after} operation. If performing either
* operation throws an exception, it is relayed to the caller of the
* composed operation.  If performing this operation throws an exception,
* the {@code after} operation will not be performed.
*
* @param after the operation to perform after this operation
* @return a composed {@code Consumer} that performs in sequence this
* operation followed by the {@code after} operation
* @throws NullPointerException if {@code after} is null
*/
default Consumer<T> andThen(Consumer<? super T> after) {
    Objects.requireNonNull(after);
    return (T t) -> { accept(t); after.accept(t); };
}

2 ответа

Решение

"Интерфейс потребителя представляет операцию, которая принимает один входной аргумент и не возвращает результата"

Ну, при условии, что эта цитата, взятая отсюда, является точной, это примерно эквивалент Action<T> делегировать в C#;

Например, этот код Java:

import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    Consumer<String> c = (x) -> System.out.println(x.toLowerCase());
    c.accept("Java2s.com");
  }
}

В C# будет:

using System;

public class Main
{
  static void Main(string[] args)
  {
     Action<string> c = (x) => Console.WriteLine(x.ToLower());
     c.Invoke("Java2s.com"); // or simply c("Java2s.com");
  }
}

Consumer<T> соответствует Action<T> и andThen Метод является оператором последовательности. Вы можете определить andThen в качестве метода расширения, например

public static Action<T> AndThen<T>(this Action<T> first, Action<T> next)
{
    return e => { first(e); next(e); };
}
Другие вопросы по тегам