Xamarin создает оболочки C # во многих местах в платформах Android (и iOS), которые нормализуют собственные методы платформы к стандартным соглашениям .Net / C #.
SetOnClickListener
- это собственный метод Java, а C # Click
- это оболочка 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
- более эффективный подход, поскольку он избегает оболочки.