c# 中 “=>“ 是什么含义?

huangjunjie_1985 2009-06-18 11:02:31
小弟,看了网上看到一段代码,请高手能帮忙解释一下。

namespace DeepCast
{
internal abstract class GeoService
{
internal abstract void Update(GeoLocation location);

internal abstract string Name { get; }
}
}

private List<GeoService> _geoServices = new List<GeoService>();

private void NotifyLocationChanged(GeoLocation location)
{
_geoServices.ForEach(g => g.Update(location));
}

当中的 g => g.Update(location)是什么意思? 特别是 => 是什么用法?
不好意思,当中的g 我也没有找到声明。
如果哪位高手能帮忙解决一下,小弟20分拱手相送。
谢谢!
...全文
5102 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿达King哥 2009-06-19
  • 打赏
  • 举报
回复
学习。
肄若芸 2009-06-19
  • 打赏
  • 举报
回复
..mark..
3.5
a421124394 2009-06-19
  • 打赏
  • 举报
回复
UP...
进来学习一下!
cacaca6 2009-06-19
  • 打赏
  • 举报
回复
=>是兰姆达表达式

g => g.Update(location) 的意思是一个函数,把这个函数按照传统方法展开是这个样子

void Func(GeoService g)
{
g.Update(location);
}

_geoServices.ForEach(g => g.Update(location)); 完全展开是这个样子

foreach(GeoService g in _geoServices)
{
g.Update(location);
}

ForEach是一个IEnumable的扩展方法,定义在其他地方,你没有列出来

兰姆达是.net 3.5的新语法
hongqi162 2009-06-19
  • 打赏
  • 举报
回复
Lambda表达式
沉序员 2009-06-19
  • 打赏
  • 举报
回复
牛人牛辦法
rabbitlzx 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cacaca6 的回复:]
=>是兰姆达表达式

g => g.Update(location) 的意思是一个函数,把这个函数按照传统方法展开是这个样子

void Func(GeoService g)
{
  g.Update(location);
}

_geoServices.ForEach(g => g.Update(location)); 完全展开是这个样子

foreach(GeoService g in _geoServices)
{
  g.Update(location); 
}

ForEach是一个IEnumable的扩展方法,定义在其他地方,你没有列出来

兰姆达是.net 3.5的新语法
[/Quote]

up+
from911cs 2009-06-19
  • 打赏
  • 举报
回复
up
smartboy986 2009-06-19
  • 打赏
  • 举报
回复
学习。
休闲中 2009-06-19
  • 打赏
  • 举报
回复
学习
rightyeah 2009-06-19
  • 打赏
  • 举报
回复
using System;
using System.IO;
using System.Text;

namespace _test{
public class test{
static void Main(){
Int32[] a=new Int32[]{1,2,3,4,5,6,7,8,9,0};
//最基本的用法,直接把一函数作为参数传给ForEach方法,它就会为a的每一个成员调用函数
Array.ForEach(a,Console.WriteLine);
//这里不用函数了,用代理。其实代理也可以理解成一个匿名函数,除了没有函数名,参数、函数体都有了。这是cs v2.0的使用方法
Array.ForEach(a,delegate(Int32 x){Console.WriteLine(x);});
//用lambda表达式也一样
Array.ForEach(a,x=>Console.WriteLine(x));
//其实它还是一个函数,只不过参数的类型都不需要指定了
Array.ForEach(a,x=>{Console.WriteLine(x);Console.WriteLine(x*2);});
}
}
}


hztltgg 2009-06-19
  • 打赏
  • 举报
回复
msdn有呀,检索一下 => 运算符
justin麒麟 2009-06-19
  • 打赏
  • 举报
回复
原来是新语法啊,,看来给永远的学习啊
松林迷途 2009-06-19
  • 打赏
  • 举报
回复
技术真的是发展太快了,我学不过来了。
huangjunjie_1985 2009-06-19
  • 打赏
  • 举报
回复
msdn里有写吗?
hztltgg 2009-06-19
  • 打赏
  • 举报
回复
只能是说linq里大量运用了=>,而不是=>是linq中的

linq用于查询集合的时候,一般需要对集合的每个项进行判断,如果用委托的话,会很长很罗嗦,用=>简化了语法
whyabc 2009-06-19
  • 打赏
  • 举报
回复
up
ld1201 2009-06-19
  • 打赏
  • 举报
回复
linq中的。
FlyBee 2009-06-19
  • 打赏
  • 举报
回复
3.5 学习
ljhcy99 2009-06-19
  • 打赏
  • 举报
回复
=>lambda 运算符
加载更多回复(14)

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧