Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

C# tương đương Functional Interfaces của Java

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