2016-11-09 2 views
0

Что это значит: += В этом коде есть оператор, это лямбда? Я прочитал документ MSDN для лямбда, но не нашел, что об этом += оператора, я буду благодарен, если кто-то объяснить мнеЧто такое + = оператор, выполняющий заданный код C#?

translateButton.Click += (object sender, EventArgs e) => 
{ 
    translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text); 
    if (String.IsNullOrWhiteSpace(translatedNumber)) 
    { 
     callButton.Text = "Call"; 
     callButton.Enabled = false; 
    } 
    else 
    { 
     callButton.Text = "Call " + translatedNumber; 
     callButton.Enabled = true; 
    } 
}; 
+0

Нажмите событие, (список делегатов), и вы добавляете новый. '+ =' Например, 'x + = 2' равно 'x = x + 2' –

+2

Это не связано с' Xamarin'. Это как раз работает 'C#'. – VSG24

+0

@ VSG24 это код xamarin.android –

ответ

3

Как арифметическую операция +=/-= означает

добавить/вычесть правую сторону/с левой стороны и присвоить результат на левую сторону.

So writing a += 5 - это то же, что и написание a = a + 5.

Этот код, однако, касается событий и обработчиков событий. В контексте обработчиков событий +=/-= означает

Добавить/удалить делегата из списка обработчиков событий для этого события.

Таким образом, ваш пример кода добавляет новый обработчик события к событию Click. То, как оно написано, называется встроенной реализацией.

Пожалуйста, обратите внимание, что в контексте обработчиков событий, вы можете обычно не заменить

Event += Handler; 

по

Event = Event + Handler; 

, поскольку нет никакого способа, чтобы «читать» «свойство» Event вне класса реализации.

0

С + = вы добавить обработчик события к событию.

код, который вы показали также может быть записана следующим образом:

translateButton.Click += translateButton_Click; 

    private void translateButton_Click(object sender, EventArgs e) 
    { 
     translatedNumber = Core.PhonewordTranslator.ToNumber(phoneNumberText.Text); 
     if (String.IsNullOrWhiteSpace(translatedNumber)) 
     { 
      callButton.Text = "Call"; 
      callButton.Enabled = false; 
     } 
     else 
     { 
      callButton.Text = "Call " + translatedNumber; 
      callButton.Enabled = true; 
     } 
    } 
+0

извините, но я не понял, вы можете объяснить немного больше? –

1

Для того, чтобы подписаться метод (Anonymous или имени) в том случае, если вы используете этот синтаксис:

translateButton.Click += (object sender, EventArgs e) => { /* .. Code*/ } 

Или

translateButton.Click += SomeMethodThatMatchesSignature; 

private void SomeMethodThatMatchesSignature(object sender, EventArgs e) 
{ 
    // .. Code 
} 

Обратите внимание, что если вы += два методов, и собираются быть казненным. Вы можете удалить его с помощью синтаксиса -=.

В библиотеке классов .NET Framework события основаны на делегате EventHandler и базовом классе EventArgs.

Делегаты, имеющие более одного метода в своем списке вызовов, получают из MulticastDelegate. Multicast делегаты широко используются в обработки

Подробнее О Делегаты Here события.

Боковое примечание: Это не имеет никакого значения для Xamarin!

0

Он добавляет обработчик события Click. И обработчик (ы) будет выполнен в порядке добавления.

Вы можете прочитать документацию here

1

+= Оператор добавления И присваивания, Он добавляет правый операнд в левый операнд и присваивает результат левому операнду.

В вашем случае вы назначаете делегата для обработки вашего события. но события не являются экземплярами делегата.

добавления и удаления методы вызываются в C#, используя eventName += delegateInstance; и eventName -= delegateInstance; соответственно, где EventName могут быть квалифицированы со ссылкой (например, myForm.Click) или имя типа (например, MyClass.SomeEvent).

В простых выражениях вы добавляете событие с помощью кнопки. Таким образом, TranslateButton = TranslateButton + Event станет TranslateButton += Event

Смежные вопросы