他们都做同样的工作——定义点击按钮时发生的事情。 那么,两者之间的真正区别是什么?
最佳答案
Xamarin 在 Android(和 iOS)框架内的许多地方创建 C# 包装器,将平台的 native 方法规范化为标准的 .Net/C# 约定。
SetOnClickListener
是 native Java 方法,C# Click
是 native 方法的 EventHandler
包装器。
Click 事件处理程序背后的代码:
public event EventHandler Click {
add {
EventHelper.AddEventHandler (ref weak_implementor_SetOnClickListener, (Func<IOnClickListenerImplementor>)__CreateIOnClickListenerImplementor, (Action<IOnClickListener>)SetOnClickListener, (Action<IOnClickListenerImplementor>)delegate (IOnClickListenerImplementor __h) {
__h.Handler = (EventHandler)Delegate.Combine (__h.Handler, value);
});
}
remove {
EventHelper.RemoveEventHandler (ref weak_implementor_SetOnClickListener, (Func<IOnClickListenerImplementor, bool>)IOnClickListenerImplementor.__IsEmpty, (Action<IOnClickListener>)delegate {
SetOnClickListener (null);
}, (Action<IOnClickListenerImplementor>)delegate (IOnClickListenerImplementor __h) {
__h.Handler = (EventHandler)Delegate.Remove (__h.Handler, value);
});
}
}
正如您在代码中看到的那样,SetOnClickListener
是更有效的方法,因为它避免了包装器。
关于Android- (button.Click += event;) 和 (button.SetOnClickListener(this)) 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53682730/