在 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/