C# - 如果我从.NET 2.0开始学习,会错过什么?

25
我有一本书名为《Pro C# 2005和.NET 2.0平台,第三版,作者是Andrew Troelsen》。我在思考是否应该购买《Pro C# 2010和.NET 4平台,第五版》。由于最新版本的.NET是4.0,如果我根据这本旧书来学习C#,是否会错过C#语言的一些重要部分?或者,我可以从这本书开始学习,并通过其他资源学习新的.NET 4.0功能。
谢谢

1
你会错过感激的痛苦 - hunter
通过Troelsen?两本书都非常优秀! - Martin
你会错过计算机的起源和Fortran的历史。当今设计应用程序时,了解计算机的起源非常重要。我建议你从Fortran 101开始。 - user279521
@user:从Fortran开始学习?_拜托了_。在Fortran之前已经有很多编程语言了。链接 - Matt Ball
@Bears.... 我并不是那么老!! :-P - user279521
我是从《Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition》这本书中学习C#的(这是我的大学讲师建议的书)。这是一本相当不错的书,所以我想2005年和2010年的版本也应该很好。 - Daniel Lo Nigro
15个回答

69
你可以从这本书开始学习,然后再从其他地方学习C# 4.0。以下是在C# 2.0之后添加的内容: C# 3.0:
- LINQ - lambda表达式 - 扩展方法 - 表达式树 - 匿名类型 - 本地类型推断 - 自动属性 - 对象初始化程序 - 集合初始化程序 - 部分方法 C# 4.0 - 动态成员查找 - 协变和逆变的泛型类型参数 - 可选参数和命名参数 - 并行化框架(实际上属于.NET 4,而不是C#4.0)

4
C# 4和相应的CLR还增加了从主要互操作程序集中“链接”类型信息的能力,这样您就不必将PIA与应用程序一起发布。(如果您只使用其中几种方法,则经常需要发布PIA程序集,这会很麻烦且体积较大。)当然,这更多是编译器功能而非语言功能。 - Eric Lippert
2
不要忘记 WPF,WCF 等。虽然它们不是语言特性,但它们是自2.0版本以来添加的 .Net 的重要部分。 - Grant Crofton
1
C# 4 的一些额外功能:其他 COM 改进(伪 ref 参数),事件和锁定更改。此外,并行化框架不是 C# 4 的一部分,而是 .NET 4 的一部分。 - Jon Skeet
我添加了你关于并行化框架的注释——我觉得在学习C# 4.0时值得了解。 - Mark Cidade
1
我想要补充的是,很多关于3和4变化的解释都假定读者已经对2有了良好的工作知识。因此,阅读提问者所拥有的书籍将使他更容易从网络或另一本书中学习其余内容。3和4仍然年轻,学习2不会导致坏习惯,并且还有足够的2和1.1运行代码,了解它们的出现时间本身就是有用的。 - Jon Hanna

24

你会错过很多东西,尤其是在我的看法中,Linq。Linq改变了惯用的C#语言面貌,以至于我无法推荐从旧书开始学习。


2
LINQ与数据库无关,虽然可以与数据库一起使用,但它并不直接与数据库相关。 - Chris Dunaway
14
LINQ与数据排序、分组、过滤和转换有关,无论是数据库中的数据、数组、XML文档、网站上的数据等。您的工作中是否涉及到对数据进行排序、分组、过滤或转换?如果是,即使您不使用数据库,也可以考虑使用LINQ。(如果不是......那么您对数据做些什么呢?它在您手上已经完美了吗?那一定很好。) - Eric Lippert
2
@q0987,不是这样的。LINQ 是一种查询语言,但它也可以用于像数组和列表这样的集合上,这可以为您节省大量的工作。 - CaffGeek
1
@q0987:LINQ 可以 与数据库相关...但并不一定要这样。每当你处理数据集合时,它都是一个 巨大的 好处。惯用的 C# 3 代码通常与惯用的 C# 2 代码非常不同。 - Jon Skeet
1
一定要投资购买那些 LINQ to SQL 的书籍,可以一次买上十几本,它们未来会像古董一样价值连城。http://visualstudiomagazine.com/articles/2009/01/01/is-linq-to-sql-dead.aspx - Jon Black
显示剩余5条评论

6

我认为你会错过LINQ,这是一个相当值得注意的添加。如果你愿意听取其他建议,我会推荐尝试Jon Skeet的C#深入浅出。它很好地涵盖了语言从2.0版本到4.0版本的各种变化(我购买了早期访问版)。


1
@Jon。对不起,我拼错了你的名字。 - Garett
@Mike,我认为更正“Jon”被误拼为“John”的情况总是值得编辑的 ;) - Jon Hanna

5

匿名函数和语言集成查询(LINQ)是非常重要的。


3

C# 2有泛型,它很不错,但是C#3和4分别拥有LINQ和动态类型,两者在各自的环境中都非常强大。

这只是其中的两个例子。还有更多你正在错过的东西。

如果可以的话,始终使用最新版本进行开发。


3
你可以从C# 2.0开始学习基础知识。C# 4.0有许多出色的新功能,但其中许多是高级或所谓的“语法糖”,意味着它是一种更简洁的方法来编写你已经可以使用C# 2.0完成的操作。关于这些新功能有许多不同的文章可供参考,而无需购买完整的书籍:

http://www.15seconds.com/issue/080228.htm http://code.msdn.microsoft.com/cs2010samples

我建议不要一开始就花钱,先看看互联网上提供的内容。

1
15seconds.com的链接现在似乎大多数都失效了。它会跳转到codeguru.com的主页,而不是具体的文章页面。 - 8bittree

3
个人认为,C# 2.0 是学习该语言的合适版本。如果您第一次学习该语言,那么从2.0开始完全可以。2.0是该语言的主要版本。
从3.0开始,添加了一些“语法糖”和“时间/输入节省器”,这会让初学者感到困惑,并且您将不得不在此处发布问题,例如“我应该使用构造函数还是对象初始化程序”。
当然,您在2.0的书中找不到3.0和4.0中添加的新功能。但正如您所说,您始终可以从其他资源中介绍这些功能。

2

我不建议您使用这么旧的版本开始学习C#。

如果您有购买新版本的资金,应该选择购买。自.net 2.0以来已经发生了很多变化。

如果目前无法购买新书,您可以从那本书中开始学习基础知识,并从在线资源中学习新功能。


1
他不需要花任何钱。Visual Studio 2010 Express版本是完全免费的,且提供对.NET 4.0的全面支持。 - Mike Hofer
1
Mike,也许我没有表达清楚,但我是在谈论购买一本新书,而不是Visual Studio。 - Claudio Redi

2
你会错过大部分新技术。 3.0引入了WPF、WCF和WF 3.5带给我们LINQ,以及其他相关技术,如lambda表达式、扩展方法等等…… 4.0引入了DLR,用于动态类型。 可以在wikipedia上找到有关新功能的完整摘要。

2
LINQ不是你所错过的全部。许多技术在3.0中添加了LINQ(并且很大程度上是因为它),这些技术都有其自身的优点,使得采用最新版本非常值得。
  • Lambdas
  • 匿名方法(可能是2.0,我现在记不清了)
  • 类型推断
  • 4.0中的动态类型
  • 许多新类和改进

如果你不是真正需要,那么用2.0可能会对自己造成损失。毕竟,框架是免费的,在线文档也是如此。此外,在线教程很多,你还可以在StackOverflow上获得丰富的编程建议。


匿名函数以内联委托的形式存在,但语法令人头疼。 - recursive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接