我应该从哪个版本的C#(和.Net)开始学习?

4

我想让自己了解C#,但之前从未开发过。在之前的问题中,我询问了好的书评网站,并通过那找到了一篇非常正面(面向初学者)的“Essential C#”书评,但那是上一版的。

虽然我相信即使版本降低,这仍然是一本好书,但它引出了一个有趣的问题:

当开始学习一门新语言时,是最好从最新版本开始(例如C# 3.0/.Net 3.5),还是应该回退一两个版本并尝试学习后来添加到语言中的内容?

前者从立即更新的角度看似更好,但后者似乎更加实用,因为一个公司可能会使用稍旧版本的语言。

11个回答

16

我建议您使用最新的版本开始一个项目。

您不一定需要学习所有最新的增强功能,但是当您准备好时它们会随时可用。

3.5实际上是2.0框架的“增强版”。

此外,如果您正在实际操作示例,请注意在最新版本中可能存在变化。一旦您熟悉了最新版本,您可以寻找运用最新版本进行改进的领域,例如使用LINQ来改进内嵌IF循环。


我在使用2.0应用程序时遇到了使用LINQ的问题。我相信LINQ程序集的某些部分是针对3.5编译的(例如LINQ2SQL)。因此,您最好先以2.0框架为目标,然后再编写3.5程序。 - chakrit
chakrit,我不同意你的观点。如果一个新用户偶然发现了LINQ示例代码,并且它的目标是2.0版本,那么它是行不通的。 - Jason Jackson

7

从最新版本开始学习。如果你需要使用基于早期版本构建的代码,则可以学习版本X和版本Y之间的差异。


4
.NET框架3.0和3.5基于2.0,因此建议您首先专注于2.0的功能,然后随着工作的进行再添加3.0和3.5的内容。确保避免使用2.0之前的任何内容,因为它们与2.0版本不兼容。

3

从最新版本开始。

较新版本中有一些好东西,而这些好东西在1.0版本中没有。您不希望养成使用早期版本中已修复的临时解决方案的“坏”习惯。


3
学习最新知识,但请确保您在掌握C# 1和2的语言特性方面非常扎实,而不仅仅是学习C# 3的酷炫功能。除此之外,在许多维护工作中,您仍将看到纯粹的C# 1。值得注意的是,要了解不同功能的实现方式-在C# 2中,可空类型和泛型需要CLR更改,但其余内容(迭代器块、匿名方法、部分类等)只是编译器魔法。在C# 3中,这都是编译器魔法(支持LINQ等框架)。您应该真正理解CLR术语中的基础知识(什么是结构体?什么是类?)CLR via C# 是学习这一点的好方法。在过于担心ASP.NET、WinForms、WPF等之前,集中关注核心技术(System.*类型、IO、集合等)。例如,我会将LINQ to Objects包括在“核心”API中,但不包括LINQ to SQL。我计划阅读Essential C#(用于复习),我已经快速浏览了它所提供的内容,似乎很扎实和全面。

2

选择使用 .NET 3.5 和 C# 3.0。否则你会落后于其他人。此外,各个版本的核心功能是相同的。但是,如果你准备好使用LINQ等功能,它已经为你准备好了!


2

我会通过问你一个问题来回答你的问题。

你更愿意在使用最新版本的C#/.Net的企业工作,还是在使用旧版本的企业工作?


1
针对您的采用问题,由于从2.0版本过渡到3.5版本对许多软件公司来说并不是非常痛苦的,所以我建议您直接从3.5开始。您会隐含地了解2.0,尽管其中一些习惯用法可能已经改变。

1

学习最新的知识,这是必须的。例如,为什么要养成使用预泛型 C# 容器的习惯,然后又不得不放弃呢?当你在旧代码中遇到它时,阅读一下旧的东西。


0

如果你正在从事自由职业合同工作,我认为学习旧的编程知识更好。因为你接触到的大部分代码都是旧的。如果你是受雇于公司需要使用编程语言来开发新应用程序,或者只是出于兴趣而学习,那么我会选择最新和最好的。


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