我爱电脑技术论坛's Archiver

麦迪 发表于 2008-6-12 06:55

.Net菜鸟学堂:Lambda表达式的一般应用

1. 在List中实现Find,Sort,Foreach,ConvertAll X q}9dBF\T
,f,Ain!d ]Z

G'?W G,P#KHMg` 例如:
9R!w4e)OW)c!Q-V*Q \^{'R)E&Kb
List numList = new List(); x0w%M3} qS"M.Wm
#T*}7oO/g
....//初始化
4Y+Oa"X;QI7]^ ;P5Jr/n7Ub;j!A
//实现Find i`.P]&{FDY
F3SQ2@gm$M8J
int x = numList.Find(n=>n == 3); Hj~ ]f\

s:XD O`.YR7Ib //实现sort V"^IuG Z
o,L7ZMD R[bV{
numList.Sort((x,y)=>{return x.CompareTo(y); });
pUD/L9Bq F7Mm$R {*D
)c"Q[%T9Pv R*MU //实现foreach
/r8y`W M'hl| P$A#ol n(Wi
numList.ForEach(n=>otherList.Add(n));
$mD2N \ iT'q]-|
euCoc Eh
@U F g#m|G%R1\,Pj4l lambda表达式使得函数可以在使用的地方声明,并且可以在lambda函数中使用lambda函数之外的数据。个人认为前者并不是什么好事,因为函数在任何地方声明并使用可能会对代码的维护造成负面影响,有价值的地方是后者。
NCq+STs/P 3C%W9njh"dCx
能够将当前scope下的数据通过lambda函数传给其它调用者,这才是有意义的地方。 3bHI v9w'a@C\3Xd E s

X ]B-R?Z)rQ4Y &Gk;a&SKP1Y'c:Y A
2. 简单的事件处理:
g.S$W%e_,D0E|{d YAf"^D/Uy

)RcMJ/Ww*na f mTextBox.TextChanged +=(sender,arg)=>mTextBox1.Text = mTextBox.Text; &z_^G1Xr
3D3E7U6O*M
在这里,系统会自动识别出sender和arg的类型,但是对于我们编写这段代码的程序员来说,sender和arg的类型和我们要编写的那段代码几乎没有任何关系,因为我们关心的是mTextBox1.Text = mTextBox.Text;。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.