java - 是否可以在 C# 中实现 JAVA 回调模式

标签 java c#

在 Java 中,这是正常的:

public class Test {
    public static void main(String[] args) throws  Exception {
        new Test().doWork(new Callback() { // implementing class            
            @Override
            public void call() {
                System.out.println("callback called");
            }
        });
    }

    public void doWork(Callback callback) {
        System.out.println("doing work");
        callback.call();
    }

    public interface Callback {
        void call();
    }
}

我想知道 C# 中是否存在等价性?我在 C# 中进行了试验,但在 doWork() 函数之后无法初始化新接口(interface)。那是因为在 JAVA 中您可以创建接口(interface)实例,而 C# 中您不能?

最佳答案

不一样,但类似的方法(传递委托(delegate))是:

DoWork(() => Console.WriteLine("callback called"));

void DoWork(Action callback)
{
    Console.WriteLine("doing work");
    callback();
}

编辑

especially when I deal with web service which has OnSuccess, OnError.

DoWork(new MyResult() {
    OnSuccess = () => Console.WriteLine("Success"),
    OnError = ()=>Console.WriteLine("Error") }
);

public class MyResult
{
    public Action OnSuccess { set; get; }
    public Action OnError { set; get; }
}

void DoWork(MyResult callback)
{
    Console.WriteLine("doing work");
    callback.OnSuccess();
}

关于java - 是否可以在 C# 中实现 JAVA 回调模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45601968/

相关文章:

Java继承方法使用了错误的类

java - 复制粘贴到 JavaFX TextArea 并保留换行符

java - 使用注释的 native hibernate/jpa 查询中标量值的问题

java - 用 Java 创建通用二叉搜索树

c# - 正则表达式需要识别句子之间没有空格的地方

c# - 为什么路径正在改变

java - 提供 JSON InputStream 的最佳方式

c# - 最小起订量模拟带有 setter 注入(inject)的接口(interface)

c# - 更改选项卡图标时 TabControl 闪烁

c# - 在两列 ListView 中拉伸(stretch)项目