2016-11-09 25 views
0

這個+=運算符在這段代碼中意味着什麼,它是lambda? 我閱讀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

Click是一個事件,(代表列表),並且您正在添加一個新事件。 '+ ='例如'x + = 2'等於'x = x + 2' –

+2

這與'Xamarin'無關。這只是'C#'的工作方式。 – VSG24

+0

@ VSG24這是一個xamarin.android代碼 –

回答

3

作爲運算+=/-=意味着

加/減右側/從左側和結果分配給左側。

所以編寫a += 5與編寫a = a + 5相同。

但是,這段代碼是關於事件和事件處理程序的。從事件處理此事件的列表在事件處理程序的情況下,+=/-=意味着

添加/刪除以下委託/。

因此,您的示例代碼爲按鈕的Click事件添加了新的事件處理程序。它的寫法被稱爲內聯實現。

請注意,在事件處理程序的情況下,通過

Event = Event + Handler; 

通常可以取代

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

爲了認購方法(匿名或命名),以該事件使用此語法:

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

或者

translateButton.Click += SomeMethodThatMatchesSignature; 

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

請注意,如果您+=兩種方法,既要被執行。您可以使用-=語法刪除一個。

在.NET Framework類庫中,事件基於 EventHandler委託和EventArgs基類。

在其調用列表中使用多個方法的委託從MulticastDelegate派生出 。組播代表廣泛用於 事件處理

閱讀關於代表Here

Side-Note:這不是特定於Xamarin的意思!

0

它向Click事件添加處理程序。處理程序將按照添加的順序執行。

您可以閱讀文檔here

1

+=添加AND賦值運算符,它將右操作數添加到左操作數並將結果賦給左操作數。

在你的情況下,你正在分配一個委託來處理你的事件。但事件不是委託實例。

在C#中分別使用eventName += delegateInstance;eventName -= delegateInstance;調用添加和刪除方法,其中eventName可以使用引用(例如myForm.Click)或類型名稱(例如MyClass.SomeEvent)進行限定。

簡而言之,您正在使用按鈕添加事件。因此TranslateButton = TranslateButton + Event將變爲TranslateButton += Event