Tương đương Functional Interface của Java trong C# là Delegate.
Java Functional Interface
@FunctionalInterface
public interface MyInterface
{
void invoke();
}
public class Demo
{
void method()
{
MyInterface x = () -> MyFunc();
x.invoke();
}
void MyFunc() { }
}
C# Delegate
public delegate void MyInterface();
public class Demo
{
internal virtual void method()
{
MyInterface x = () => MyFunc();
x();
}
internal virtual void MyFunc() { }
}
So sánh:
- Java: Interface có 1 abstract method, dùng lambda
() -> ... - C#: Delegate định nghĩa signature, dùng lambda
() => ... - C# còn có
Func<T>,Action<T>built-in cho các delegate phổ biến