C#如何有效讲授学习
2009-05-15 14:58 宗哥 阅读(3442) 评论(11) 编辑 收藏 举报C#如何有效讲授学习
译者注:
回顾C#发展的历史,回顾C#发展的历史,版本变换的之快对于正在/准备使用C#的开发者来说,目不暇接,无力应付。 当前版本还没有深入,新版本新特性有出来了。
图为译者加
如何进行有效的C#学习和讲授?也许Bill wagner的话对你有点启发。原博客《Explain from the Questioner’s perspective, not your own》
Billwagner是世界知名的.NET专家,微软C#领域的MVP,并荣获微软RegionalDirector称号。 他是著名软件咨询公司SRTSolutions的创始人,有20多年软件开发经验,曾经领导了众多成功的Windows平台产品的开发。 他是微软开发社区的活跃人物,长期担任MSDNMagazine、ASP.NETPro、VisualStudioMagazine等技术杂志的专栏作者。 他的blog是http://www.srtsolutions.com/public/blog/20574。
引言
我曾经参与一个有趣的讨论,主体是关于“C#版本更新太频繁,以至于教开发人员精通每一个版本的技术变的越来越困难”。
我想这个是我们的过错。
作为领导者和有经验的发人员,对于新手,我们经常对他们传授从我们的经验看:从C#1.0入门,2.0学习语言新特征,然后3.0中,学习LINQ和其他的新加语法。 现在,我们正在准备学习C#4.0新特性到我们技术体系。我们就是这样认为的,也是这样学的。
然而我们不是他们.
对于一些人来说,这是个效率低下的学习C#语言方式。相反,我们应当根据他们的基础传达新的理念他们如何学习,而不是我们是如何学习的。我多么想以拥有这样惊人的洞察力为荣,可以我得以Bjarne Stroustrup为荣。 早在1999年,他为《C++ Users Journal back》杂志写过的一篇文章中提成:"C++社区必须改变他们教授C+ +的方式"; 过去,每个人对C++新手进行教学的时候,都假定他是经验丰富的C程序员。 然后才是如何去教。相反,Stroustrup指出“C++程序员应该学习C++中最重要的特性,而不是先去教C,然后再转移到C++”;
Lambda表达式的例子
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();
不错,但是关于委托,匿名委托和表达式数那?
总之,我没有把Lambda表达式用C#中1.0语法中去作解释。特别强调一点:除非你有过C#的从头学习的经验,否则这个概念对你一点也没有用。一些人学习C#并没有先前C# 1.0,2.0的基础。
看了我一上的说明,他们并没给出编译器如何解释lambda表示式的砸碎的细节。 相反,如何使用lambda表达式写代码,给出了很好的说明并且对lambda表达式能做什么给出了阐述。
我没有说错什么,但很多细节被忽略。That’s ok,隐藏细节能让新手更好入门。如果这些C#新手想更全面深入的了解时候,我们可以来弥补这些漏洞。
在那时,他们乐意接受不同的解释。
在此之前,我们最好地利用帮助他们的解释来解释概念,即使这些解释不同于我们是如何学的经验。
声明: 本文作者:宗哥,宗子城
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明。 ...