WEB开发网
开发学院软件开发C语言 C#如何有效讲授学习 阅读

C#如何有效讲授学习

 2009-05-15 08:28:24 来源:WEB开发网   
核心提示: Lambda表达式的例子拿Lambda表达式作为例子解释C#是什么,我认为是个很好的例子,C#如何有效讲授学习(2), 当我向一个C#新手解释Lambda表达试时,我用这个例子:varsomeNumbers=newList<int>(Enumerable.Range(-20,2

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 作为他的参数, Predicate返回bool类型。因此表达式‘n > 30’ 必须是个bool类型的表达式。为了说明这一点,我会修改代码显示编译器如何检查类型。Lambda 表达式 ‘n => n.ToString()’ 就不能编译通过,因为n.ToString()是n的string表示的计算,不是bool表达式。 然后,我开始讲这个概念:Lambda 表达式是允许你通过传递代码(术语:Lambda)到另外一个函数进行晚期执行的一个途径。在编译器内部,List.RemoveAll()用Lambda表达式参数对集合中的每个元素进行计算判断,移出符合条件的元素。

同样的方法,我来解释TrueForAll();

不错,但是关于委托,匿名委托和表达式数那?

如果您是经验丰富的C #中开发者可能会注意到:我没有提到lambdas和匿名委托相像,也没有进一步反复强调匿名委托就是委托。

总之,我没有把Lambda表达式用C#中1.0语法中去作解释。特别强调一点:除非你有过C#的从头学习的经验,否则这个概念对你一点也没有用。一些人学习C#并没有先前C# 1.0,2.0的基础。

看了我一上的说明,他们并没给出编译器如何解释lambda表示式的砸碎的细节。 相反,如何使用lambda表达式写代码,给出了很好的说明并且对lambda表达式能做什么给出了阐述。

我没有说错什么,但很多细节被忽略。That’s ok,隐藏细节能让新手更好入门。如果这些C#新手想更全面深入的了解时候,我们可以来弥补这些漏洞。

在那时,他们乐意接受不同的解释。

在此之前,我们最好地利用帮助他们的解释来解释概念,即使这些解释不同于我们是如何学的经验。

上一页  1 2 

Tags:如何 有效 讲授

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接