C#如何有效讲授学习
2009-05-15 08:28:24 来源:WEB开发网Lambda表达式的例子
拿Lambda表达式作为例子解释C#是什么,我认为是个很好的例子。 当我向一个C#新手解释Lambda表达试时,我用这个例子:
var someNumbers = new List<int>(Enumerable.Range(-20, 200));
someNumbers.RemoveAll(n => n > 30);
bool assertion = someNumbers.TrueForAll(n => n < 40);
第一行代码用一堆数字创建一个集合。
第二行导入到Lambda表达式。 它删除集合中所有大于30的数字。 在Lambda表达式中“n => n > 30”描述是从中删除的所有元素符合的条件。 Lambda表达式是一个方法的简单写法: n是参数。 该表达式返回一个布尔值,例子结果是“n > 30’。
在这一点上,我会经常被问道几个问题:
参数‘n’的类型是什么?
这个容易回答:编译器为Lambda表达式推断参数类型,编译器推断他一定为整型,因为集合中已经有一部分整型数据。
为什么这而没有返回值
是,我知道这算不上什么问题,但是这确实反映了他们的困惑,这个也是他们经常问起的原因。我这样解释,编译器推断返回类型。List.RemoveAll() 把 Predicate
同样的方法,我来解释TrueForAll();
不错,但是关于委托,匿名委托和表达式数那?
如果您是经验丰富的C #中开发者可能会注意到:我没有提到lambdas和匿名委托相像,也没有进一步反复强调匿名委托就是委托。
总之,我没有把Lambda表达式用C#中1.0语法中去作解释。特别强调一点:除非你有过C#的从头学习的经验,否则这个概念对你一点也没有用。一些人学习C#并没有先前C# 1.0,2.0的基础。
看了我一上的说明,他们并没给出编译器如何解释lambda表示式的砸碎的细节。 相反,如何使用lambda表达式写代码,给出了很好的说明并且对lambda表达式能做什么给出了阐述。
我没有说错什么,但很多细节被忽略。That’s ok,隐藏细节能让新手更好入门。如果这些C#新手想更全面深入的了解时候,我们可以来弥补这些漏洞。
在那时,他们乐意接受不同的解释。
在此之前,我们最好地利用帮助他们的解释来解释概念,即使这些解释不同于我们是如何学的经验。
更多精彩
赞助商链接