繁体   English   中英

为什么要升级到C#4.0?

[英]Why should I upgrade to c# 4.0?

我知道C#4.0中有一些不错的新功能,但是我一生都无法想到升级现有项目或切换到新项目的迫切原因。

我见过一些帖子,人们说过,如果他们的托管服务未提供.Net 4,则他们会找到另一个提供商,因为.Net 4符合他们的发展方向<?>

现在,我的老板正试图让我同意将我们所有的生产环境切换到C#4并立即执行。

那么问题来了,是否有人出于令人信服的原因开始使用C#4或将项目转换为C#4? 是否只有您需要的一项功能可以使您的生活变得如此轻松?

C#4.0中有一些很酷的新功能

  • 动态成员查找
  • 协变和逆变泛型类型参数
  • 使用COM时的可选ref关键字
  • 可选参数和命名参数
  • 索引属性

Scott Guthrie在其发布的博客文章中详细介绍了.NET 4的一般功能 另一个很棒的资源是http://www.asp.net/learn/whitepapers/aspnet4上的白皮书。 但是,我怀疑您将立即需要这些新功能中的一个/任何一个。 正如Scott Hanselman所说:

.NET 4中有很多新内容,但不是以“压倒性的我需要重新学习所有内容”的方式。

因此,是否应该升级取决于其他各种因素。 让我想到一些原因:

  • 相对于VS2008,在单个平台VS2010上标准化您的开发环境。
  • .NET Framework的大小已大大减少
  • 如果您是Office开发人员的Visual Studio工具,则可以提高速度

与您的经理进行公开对话似乎很适合了解他升级的原因。 我认为,因为它有光泽不是一个令人信服的原因。

作为参考,这个过时的Stack Overflow问题“ 为什么不升级到最新的.net框架 ”提供了与您的问题相反的结论。

  • 坦率地说, System.Collections.Concurrent使开发多线程应用程序变得轻而易举。

  • 新的和改进的System.Linq.Expressions使编写动态编译的代码看起来像是在玩耍。

  • 新的命名参数功能意味着我可以拥有庞大的构造函数,而不必混淆每个参数的含义。 不变的对象就这么简单。

出人意料的是没有提到:

您的问题仅针对C#4.0或.NET 4.0吗?

在C#4.0中,只有几个非常好的新功能。 协方差/相反方差并不是一直有用,但是当您遇到需求时,确实可以节省很多痛苦。 可选的方法参数可以减少很多丑陋的方法覆盖,并使某些方法调用变得更加整洁。 如果您使用的是COM或IronPython或任何其他类似框架,则dynamic关键字也可以是真正的救星。

总体而言,.NET 4.0在各种框架中都有大量真正有趣的功能。 例如,Linq to Entities中的外键支持使我们的生活变得更加轻松。 很多人对POCO的支持感到非常兴奋。 他们还增加了对某些LINQ方法(例如Distinct )的支持,这些方法以前是实体框架中缺少的。

因此,这实际上将归结为您正在使用哪些框架以及如何使用它们,以及进行切换的成本将是多少。

首先,对我来说有吸引力的事情可能对您没有任何意义。 话虽如此,如果预算允许,我将升级Visual Studio。 实际上,就我个人而言,我认为与一家不及时更新工具的公司呆在一起存在巨大的职业风险。 您将无法获得最新工具,就无法掌握该领域的知识。

至于转换所有项目只是为了转换它们,对我来说似乎很愚蠢。 撇开所有额外的工作分配(并将机器升级为.NET 4),您必须考虑出现问题的机会。 (如果您像我一样,则必须使用.NET 3.5从第三方程序调用某些操作,从而使它们无法转换。)

我的第一个规则是,除非您仍在进行任何操作,否则什么也不会转换。 但是我会认真地考虑转换任何可以使用并行代码或COM互操作进行改进的东西。

我确实有一个引人注目的项目,该项目已被转换。 我有一个运行时间长的Web方法被调用。 在现在存在的版本中,我不知道结果就从方法中返回。 相反,我为用户提供了一种稍后检查的方法。 通过转到并行的foreach循环,效果会更好,我可以让用户知道是否有任何错误。

同样的项目也正在转换为使用RIA服务,该服务已大大改善并减少了我自己的代码量。

我出于其他所有人所做的相同原因进行了升级。

...所以我可以把它放在简历上:)

如果您今天开始一个新项目,最好在4.0上启动它,因为在将来,您无论如何都必须迁移它(假设它保存的时间足够长,.net的较早版本将不再被支持的)。

C#4包含其他内容..取决于您的项目... WCF 4,WPF 4,ASP.NET 4,MVC 2,实体框架2等。因此,不要只是将C#视为更改的原因,您还必须查看整个堆栈。 如果仍然没有什么吸引人的地方,那么留在自己的位置可能是一个明智的选择。

如果您正在执行WPF / Silverlight,我绝对建议您升级到Visual Studio 2010(我知道,您可以在没有IDE的情况下编写.NET 4.0代码,但是如果有的话,这是一个极端的情况)。

多监视器支持很漂亮,但有很多错误。 我花了很多时间试图刷新窗口。

在语言方面,COM互操作(如@Gvs所述)也通过动态数据类型和可选参数得到了极大的改进。

更新: VS 2010 SP1对多监视器的支持非常牢固。

如果您可以让老板抢购价格超过10,000美元的Visual Studio Ultimate Edition,则IntelliTrace是升级环境和合理性足以吸引投资的诱人理由。

使用dynamic数据类型和optional参数,COM集成要容易得多。

对我来说,有两件事:

  1. 可选参数-因为我讨厌用相同方法的X版本污染类(重载)
  2. 动态关键字-因为C#中泛型的表达是个玩笑,因此我至少可以“毫不费力”地“写出我的意思”,当然这会降低执行速度

代码越紧凑(即,如果您在不加“哦,如何避免限制语言Y”的情况下表达想法),则越好,因为代码易于维护,并且变得更愚蠢(或更糟)。 )错误。

没有令人信服的稳定性或安全性理由要切换。 那不是你老板的事吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM