Android - какая разница между (button.Click + = event;) и a (button.SetOnClickListener (this))? - PullRequest
0 голосов
/ 08 декабря 2018

Они оба выполняют одну и ту же работу - определяют, что происходит при нажатии кнопки.Так в чем же разница между этими двумя?

1 Ответ

0 голосов
/ 08 декабря 2018

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 - более эффективный подход, поскольку он избегает оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...