2011-12-20 73 views
1

我有下面的代碼,我不能完全理解的發生有:C#中符號「=>」的含義是什麼?

Authorize auth = new Authorize(
    this.google, 
    (DesktopConsumer consumer, out string requestToken) => 
    GoogleConsumer.RequestAuthorization(
     consumer, 
     GoogleConsumer.Applications.Contacts | GoogleConsumer.Applications.Blogger, 
     out requestToken)); 

這是我知道的:
「授權」 - 只有1個構造函數接受2個參數:(DesktopConsumer,FetchUri )。
「this.google」 - 是一個「desktopConsumer」對象。
「GoogleConsumer.RequestAuthorization」返回一個「Uri」對象。

我不明白什麼是線的含義是:在中間
(DesktopConsumer consumer, out string requestToken) =>

+0

http://stackoverflow.com/questions/1640684/what-is-the-symbol-doing-after-my-method-in-this-c-sharp-code – dash

+0

LINQ用戶的常見標誌。 .. – Sandy

+0

如果其他人可能需要閱讀它,那麼在代碼中使用這些不明確的字符時,這是一個很好的例子。 – DOK

回答

7

在這種情況下=>創建使用與所述參數DesktopConsumer consumer, out string requestToken一個lambda expression匿名方法/委託。

+0

明白了,謝謝! –

2

沒有FO時間這個問題問這個的lambda表達式=>

什麼是Lambda表達式的標誌?

Lambda expression is replacement of the anonymous method avilable in C#2.0 Lambda expression can do all thing which can be done by anonymous method. 


Lambda expression are sort and function consist of single line or block of statement. 

閱讀此:http://pranayamr.blogspot.com/2010/11/lamda-expressions.html

閱讀更多關於它在MSDN:http://msdn.microsoft.com/en-us/library/bb397687.aspx

2

它是一個lambda函數。 ()部分定義了傳遞給它的參數,並且=>之後的部分是正在評估的部分。

4

=>運營商有時被稱爲「去」運營商。它是創建匿名方法的lambda語法的一部分。操作符的左邊是方法的參數,右邊是實現。

參見MSDN here

所有lambda表達式使用拉姆達運算符=>,它讀作 「變爲」。 lambda運算符的左側指定輸入參數(如果有的話),右側保存表達式或語句塊。 lambda表達式x => x * x被讀取爲「x轉到x次x」。

2

在你的情況下,lambda運算符的意思是「使用這些參數,執行下面的代碼」。

因此,它基本上定義了一個匿名函數,您可以將一個DesktopConsumer和一個字符串(它也可以在函數中修改並傳回)傳遞給它。

2

「=>」用於lamdba表達式。

(DesktopConsumer consumer, out string requestToken) =>   
    GoogleConsumer.RequestAuthorization(
     consumer, 
     GoogleConsumer.Applications.Contacts | GoogleConsumer.Applications.Blogger, 
     out requestToken) 

是方法聲明的非常簡短的形式,其中方法名稱是未知的(方法是匿名的)。您可以通過替換此代碼:

private void Anonymous (DesktopConsumer consumer, out string requestToken) 
{ 
    return GoogleConsumer.RequestAuthorization(
     consumer, 
     GoogleConsumer.Applications.Contacts | GoogleConsumer.Applications.Blogger, 
     out requestToken); 
} 

然後通過調用替換:

Authorize auth = new Authorize(this.google, Anonymous); 

注意,匿名這裏不叫(請參見缺少括號())。不是匿名結果作爲參數傳遞,但匿名本身作爲委託傳遞。授權將在某個時刻調用匿名並將其傳遞給實際參數。

相關問題