繁体   English   中英

C#中的“ =>”符号是什么意思?

[英]what the sign “=>” mean in 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) =>
在中间。

在这种情况下, =>使用带参数DesktopConsumer consumer, out string requestTokenlambda表达式创建一个匿名方法/委托DesktopConsumer consumer, out string requestToken

=>运算符有时称为“转到”运算符。 它是创建匿名方法的lambda语法的一部分。 运算符的左边是方法的参数,右边是实现。

在这里查看MSDN:

所有lambda表达式都使用lambda运算符=>,它被读为“ goes to”。 lambda运算符的左侧指定输入参数(如果有),而右侧则保存表达式或语句块。 读取lambda表达式x => x * x“ x达到x的x倍”。

暂时没有这个问题问这个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/zh-cn/library/bb397687.aspx

它的英文意思是“翻译为”。 它构成了lambda表达式的一部分: http : //msdn.microsoft.com/en-us/library/bb397687.aspx

它是lambda函数。 ()部分定义要传递给它的参数,而=>之后的部分是要评估的部分。

在您的情况下,lambda运算符的意思是“使用这些参数,执行以下代码”。

因此,它本质上定义了一个匿名函数,您可以将DesktopConsumer和一个字符串(也可以在该函数中进行修改并发送回)传递给该匿名函数。

在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); 

请注意,此处未调用Anonymous(请参阅缺少的括号())。 不是将Anonymous的结果作为参数传递,而是将Anonymous本身作为委托传递。 Authorize会在某个时候调用Anonymous并将其传递给实际参数。

Lambda运算子

有关更多详细信息,请参见我的其他答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM