【问题标题】:C# - What will I miss if I start with .NET 2.0?C# - 如果我从 .NET 2.0 开始,我会错过什么?
【发布时间】:2021-03-04 06:23:37
【问题描述】:

我有一本名为“Pro C# 2005 and the .NET 2.0 Platform, Third Edition by Andrew Troelsen”的书。 我想知道是否应该购买“Pro C# 2010 and the .NET 4 Platform, Fifth Edition”。因为,.NET 的最新版本是 4.0。如果我根据这本旧书学习 C#,我会错过 C# 语言的一些关键部分吗?或者,我可以从这本书开始,通过其他资源学习新的 .NET 4.0 功能。

谢谢

【问题讨论】:

  • 你会错过欣赏的痛苦
  • 特罗尔森?这两本书都很棒!
  • 您会怀念计算机的诞生过程和 fortran 的历史。在今天设计应用程序时,了解计算机是如何产生的非常重要。我说你从 fortran 101 开始。
  • @user:从 Fortran 开始? 。有plenty of programming before Fortran
  • @Bears....我没那么老!! :-P

标签: c#


【解决方案1】:

您可以从那本书开始,从其他地方学习 C# 4.0。这是 C# 2.0 之后添加的内容:

C# 3.0:

  • LINQ
  • lambdas
  • 扩展方法
  • 表达式树
  • 匿名类型
  • 本地类型推断
  • 自动属性
  • 对象初始化器
  • 集合初始化器
  • 部分方法

C# 4.0

  • 动态成员查找
  • 协变和逆变泛型类型参数
  • 可选参数和命名参数
  • 并行化框架(实际上是 .NET 4 的一部分,而不是 C# 4.0 本身

【讨论】:

  • C# 4 和相应的 CLR 还添加了从主互操作程序集“链接”类型信息的功能,因此您不必将 PIA 与您的应用程序一起提供。 (如果您只在其中使用几个方法,PIA 程序集通常很大并且不得不发布,这很烦人。)当然,这更多的是编译器功能而不是语言功能。
  • 不要忘记 WPF、WCF 等。虽然不是语言功能,但它们是 .Net 的重要组成部分,从 2.0 开始添加。
  • C# 4 的一些额外内容:其他一些 COM 改进(伪引用参数)、事件和锁定更改。此外,并行化框架不是 C# 4 的一部分,它是 .NET 4 的一部分。
  • 我添加了你关于并行化框架的注释——我只是认为在学习 C# 4.0 时值得了解
  • 我要补充一点的是,很多解释 3 和 4 变化的东西都假设对 2 有很好的工作知识。因此,阅读 querant 的书会让他可以更轻松地从网络或其他书籍中学习其余内容。 3 和 4 还很年轻,学习 2 不会导致坏习惯,并且仍然有足够的 2 和 1.1 运行代码,知道什么时候出现本身就很有用。
【解决方案2】:

你会错过很多。在我看来,最值得注意的是 Linq。 Linq 改变了惯用 C# 的整个面貌,以至于我不建议从旧书开始。

【讨论】:

  • LINQ 与数据库无关。您可以将它与数据库一起使用,但它不直接与它们链接。
  • @q0987:LINQ 与排序、分组、过滤和转换数据有关,无论是数据库、数组、XML 文档、网站等中的数据。您是否在工作中对数据进行排序、分组、过滤或转换?如果是,即使您不使用数据库,您也可能想要研究 LINQ。 (如果不是......你对你的数据做了什么?当你得到它时它已经完美了吗?那一定很好。)
  • @q0987,不正确。 LINQ 是一种查询语言,是的,但它也可以用于数组和列表等集合,从而为您节省大量工作。
  • @q0987: LINQ 可以 与数据库相关...但当然不必如此。每当您处理数据集合时,这都是一个巨大的福音。惯用的 C# 3 代码通常非常不同于惯用的 C# 2 代码。
  • 您正在考虑使用 LINQ-to-SQL。 LINQ-to-objects 本身就很值得了解,但 LINQ 甚至超越了那些(例如,LINQ-to-XML)。
【解决方案3】:

我认为您会错过 LINQ,这是一个非常显着的补充。如果您愿意接受其他建议,我想说试试 Jon Skeet 的 C# In Depth。它很好地涵盖了语言从 2.0 版到 4.0 版的各种变化(我购买了抢先体验版)。

【讨论】:

  • @Jon。对于您的名字拼写错误,我深表歉意。
  • @Mike,纠正“Jon”被错误拼写为“John”的情况总是值得编辑 IMO ;)
【解决方案4】:

Lambdas / LINQ 非常庞大。

【讨论】:

    【解决方案5】:

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

    这只是举两个例子。你错过了更多的废话。

    如果可以,请始终针对最新版本进行开发。

    【讨论】:

      【解决方案6】:

      您当然可以从 C# 2.0 开始学习基础知识。 C# 4.0 中有许多很棒的新功能,但其中许多是高级功能或所谓的“语法糖”,这意味着它是一种更简洁的方式来编写您已经可以使用 C# 2.0 完成的功能。

      有很多关于新功能的不同帖子,您可以参考,而无需购买完整的书籍:

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

      我建议不要预先花钱,并查看互联网提供的服务。

      【讨论】:

      • 15seconds.com 链接现在似乎大部分已损坏。它转到 codeguru.com 主页,而不是特定文章。
      【解决方案7】:

      就个人而言,我认为 2.0 是正确的 C# 版本。如果您是第一次学习该语言,那么从 2.0 开始就完全可以了。 2.0 是 core 语言的主要版本。

      从 3.0 开始,添加了一些特性,它们不过是“语法糖”和“时间/打字节省器”,这会让初学者感到困惑,你会必须在这里发布诸如“我应该使用构造函数还是对象初始化器”之类的问题。

      当然,您不会在 2.0 的书中找到 3.0 和 4.0 中添加的新功能。但正如您所说,您总是可以从其他资源中获得介绍。

      【讨论】:

        【解决方案8】:

        我不建议你从这么旧的版本开始学习 C#。

        如果你有钱买新版本,你应该去买。自 .net 2.0 以来发生了很多变化。

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

        【讨论】:

        • 他不需要花钱。 Visual Studio 2010 的 Express Edition 完全免费,并且完全支持 .NET 4.0。
        • 迈克,也许我不够清楚,但我说的是买一本新书,而不是视觉工作室。
        【解决方案9】:

        您会错过大多数新技术。 3.0引入了WPF、WCF和WF 3.5 为我们提供了 LINQ,以及其他相关技术,如 lambda 表达式、扩展方法...... 4.0 带来了 DLR,用于动态类型。

        可以在wikipedia 上找到新功能的完整摘要。

        【讨论】:

          【解决方案10】:

          LINQ 并不是您会想念的全部。 LINQ 添加到 3.0 的许多技术(主要是因为它)各有优点,因此非常值得采用最新版本。

          • Lambdas
          • 匿名方法(可能是 2.0,暂时不记得了)
          • 类型推断
          • 4.0 中的动态类型
          • 许多新的类和改进

          如果你真的没有必须,我认为如果你用 2.0 来削弱自己,你可能会对自己造成伤害。毕竟,该框架是免费的,在线文档也是如此。此外,在线教程比比皆是,您可以在 StackOverflow 上获得丰富的编程建议资源。

          【讨论】:

          • 匿名函数确实以内联委托的形式存在,但语法很痛苦。
          【解决方案11】:

          MSDN 有一组有用的页面(开始 here),它们准确地告诉您当您针对旧版本的 C# 和 .Net Framework 时会错过什么。

          请记住,当您以 C# 版本为目标时,您不仅将自己与语言联系在一起,而且与匹配的 .Net 框架联系在一起 - 2008 年和 2010 年都有一大堆新东西,您会错过的.Net 2.0。

          【讨论】:

            【解决方案12】:

            自 2.0 以来您想了解的主要内容包括:

            • Linq(一种强大的经过编译器检查的查询语言,用于列表/集合处理以及作为 ORM 框架的接口)。
            • 匿名类型和委托(lambda 表达式)。需要存储您从 Linq 表达式中获得的一些数据字段的列表,但不需要/想要定义一个全新的类型来存储它们?你不必了。类似地,如果你需要对列表的每个元素做一些事情,或者指定一些操作来返回结果,但又不想定义命名方法,你就不必这样做。 C# 允许您指定“匿名”类型和委托,它们在使用它们的位置进行定义,并且只能通过包含委托或数据引用的变量进行访问。
            • WPF(下一代 UI 开发,它是一种基于 XML 的演示文稿布局定义,最终将取代 WinForms 和 ASP.NET)
            • WCF - 下一代 Web 服务类,支持加密等内置安全功能。
            • Microsoft Entity Framework - Microsoft 对 NHibernate 等 ORM 框架的采用
            • 动态类型 - C# 4.0 允许通过将类型或参数定义为 dynamic 来放宽类型限制。这允许 .NET 与以“鸭子类型”语言编写的程序集或本机 API 更无缝地交互(其中类型始终是动态的,从您尝试对实例执行的操作中推断出来)
            • 更好的协变/逆变支持 - .NET 4.0 允许您指定可以将类型的集合视为派生类型或祖先类型的集合。

            【讨论】:

            • 感谢您提供所有这些信息。对我来说坏消息是我必须买一本新书。
            【解决方案13】:

            .Net 的各个版本基本上都是相似的,但从 2.0 开始,您唯一可以收集到的信息就是了解语言中某些变化的来源历史。不过,这更像是一种体验。如果您尚未接受过 C# 培训,最好从最晚开始。该语言的基础仍然是相同的。您还将学习完成常见任务的最新技术,而不是学习过时的方法,然后必须在以后重新学习它并尝试理解差异以及它存在的原因。

            从最新的东西开始。不要从过时的资源中学习,然后尝试用无关的信息来填补空白。

            【讨论】:

            • 你知道,就在前几天,我试图回忆在 C# 中连接 .NET 1.1 中的事件处理程序是什么感觉。我在任何地方都找不到一个例子。所以你是对的:掌握“The Glory Days”很好,这样你就可以看到我们去过哪里,我们现在在哪里,以及我们可能要去哪里。对 .NET 进行编程就是在对 .NET 进行编程。最终这一切都归结为编译器和类。但我想如果我站在他的立场上,我仍然建议采用最新版本。
            • @Mike Hofer - 我记得那些日子,而且我确信 MS 在某处仍然有一些链接腐烂的文档,但是是的 - 最新的东西或半身像。
            【解决方案14】:

            编程技术变化如此之快,您为什么要花时间阅读这么一本旧书?我会买最新的。

            【讨论】:

              【解决方案15】:

              除了前面提到的 Linq/lambdas 等,后面的书还将介绍 WPF 等技术,它已经在桌面开发中几乎取代了 winforms,WCF 是现在常用的通信方法,所以我会尝试得到以后的书。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-03-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-09-08
                • 2016-07-18
                • 2021-10-19
                • 1970-01-01
                相关资源
                最近更新 更多