111,074
社区成员




var showList = Array.ConvertAll(testerHis.BinCode, a => BinManager.BinCodeShow[a]);
我也知道 =>这是lambda表达 式,或是LINQ查询,我也知道 Array.ConvertAll(是将一种类型转换另一种类型。
可我就是不能理解 这个a是做什么的,这一段的意义。
BinCodeShow是一个字符 串数组
BinCode是整型数组
说实话代码不是这么学的,语法形式本身并不重要。你只管知道当时那个人在想什么就要,至于他写成啥其实不重要。
现在网上批谭浩强的教材,最大原因就是老谭的教材,就是一本专门讲形式的教材。
一大堆章节在那里折腾 (++i)+(i++),***p,p,*&p,char p 和char *p这种形式语法区别
问题是谁告诉你程序应该这么学,这么写的??
Array.ConvertAll(一组矩形对象,rect=>rect.X * Rect.Y);
如果你对这个不理解,我可以换成中文描述
面积计算函数=F(矩形对象rect)=>rect=>rect.X * Rect.Y
数组遍历转换函数=F(数组,转换函数)=》遍历数组,并把数组的每个元素转换函数转换一遍
最后把在两个函数代入计算
数组遍历函数(待转换的数组,代入面积计算函数)
为了便于你理解,我们假设有个矩形对象x,y属性代表宽和高,我有一组这个对象,我说你来帮我求他们的面积。
Array.ConvertAll(一组矩形对象,rect=>rect.X * Rect.Y);
这个可以理解把,定义一个函数
矩形面积=f(矩形对象)=>(矩形对象.长) * (矩形对象.高)
他没啥特别的,自变量矩形对象,面积计算公式等于长乘以高。 就是定义了一个面积计算函数。所以别想复杂了
不用理解。
如果你还记得你小学怎么解题的,我们说那就不用理解
2X+4Y=100
那么y=(100-2x)/4 对吧
切到高中知识,这东西叫什么?叫线性函数对吧
y=f(x)=100-2x)/4
好了,你可以理解了把,a => BinManager.BinCodeShow[a]
其实就是 f(a)= BinManager.BinCodeShow[a]
而b=f(a)=BinManager.BinCodeShow[a],被认为是fun(a,b)委托,也就是定义一个函数,自变量是a,因变量是b,计算方法为BinManager.BinCodeShow[a]
话说你还是过于纠结,好像以前你纠结websevice就说过,这种学法根本不对。都只是人为规定的规则,他那么规定你就那么写。就算你知道websevice那个soap的xml每个细节,对于你写程序来说根本没有意义。
这里其实也一样,纠结a=>b没有意义,他就是一个定义了一个a做自变量的函数而已。纠结这个箭头和a没有什么意义