我为什么要升级到c#4.0?

时间:2010-07-15 22:14:36

标签: c# c#-4.0

我知道C#4.0中有一些不错的新功能,但在我的生活中,我不能想到升级现有项目或转换到新项目的令人信服的理由。

我看过一些帖子,人们说过,如果他们的托管服务没有提供.Net 4,他们会找到另一个提供商,因为.Net 4是他们的方向<?>

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

所以问题是有没有人开始使用,或者将项目转换为C#4,这是有说服力的理由?是否有一个你必须拥有的功能会让你的生活变得如此简单?

12 个答案:

答案 0 :(得分:12)

有一些很酷的new features in C# 4.0

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

在他的发布博客中,Scott Guthrie详细介绍了features of .NET 4 in general。另一个很好的资源是http://www.asp.net/learn/whitepapers/aspnet4的白皮书。但是,我怀疑你是否会立即需要一个/任何这些新功能。正如Scott Hanselman blogged

  

有许多新东西   在.NET 4中添加,但不是   “压倒性-I-需要到重新学习,一切”   方式。

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

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

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

作为参考,此日期Stack Overflow问题“Why not upgrade to the latest .net framework”与您的问题相反。

答案 1 :(得分:5)

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

  • 新的和改进的System.Linq.Expressions使编写动态编译的代码看起来像是孩子的游戏。

  • 新的命名参数功能意味着我可以拥有大型构造函数,而不会对每个参数的含义感到困惑。不可变对象更容易。

答案 2 :(得分:5)

令人惊讶的是没有提到:

答案 3 :(得分:3)

您的问题是针对C#4.0还是.NET 4.0?

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

.NET 4.0通常在各种框架中都有很多非常有趣的功能。例如,Linq to Entities的外键支持使我们的生活变得更加轻松。很多人对POCO支持感到非常兴奋。他们还添加了对实体框架中先前缺少的一些LINQ方法(例如Distinct)的支持。

所以它真的可以归结为你正在使用哪些框架以及你如何使用它们,以及你进行切换的成本是多少。

答案 4 :(得分:2)

首先,对我有用的东西可能对你毫无意义。话虽如此,如果预算允许,我会升级Visual Studio。事实上,就个人而言,我认为与一家公司保持最新状态的公司存在巨大的职业风险。如果不使用最新工具,您将落后于对该领域的了解。

至于转换所有项目只是为了转换它们对我来说似乎是愚蠢的。抛开所有额外的工作分配(并将机器升级到.NET 4),你必须考虑到你出错的可能性。 (如果你像我一样,必须使用.NET 3.5从第三方程序调用某些东西,使它们无法转换。)

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

我确实有一个被转换的引人注目的项目。我有一个长期运行的Web方法被调用。在现在存在的版本中,我从方法返回而不知道结果。相反,我给了用户一个稍后检查的方法。通过移动到并行的foreach循环,这可以更好地工作,我可以让用户知道是否有任何错误。

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

答案 5 :(得分:2)

我升级的原因与其他人一样。

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

答案 6 :(得分:1)

如果你今天要开始一个新项目,最好在4.0上启动它,因为在未来的某个时候你将不得不迁移它(假设它保持足够长的时间,旧版本的.net将会只是停止支持)。

C#4暗示其他事情......取决于你的项目...... WCF 4,WPF 4,ASP.NET 4,MVC 2,实体框架2等等。所以不要只看C#作为原因改变,你还要看整个堆栈。如果仍然没有任何令人信服的东西,那么留在你所处的位置可能是明智的选择。

答案 7 :(得分:1)

如果您正在使用WPF / Silverlight,我肯定会建议升级到Visual Studio 2010(我知道,您可以在没有IDE的情况下编写.NET 4.0代码,但这是一个边缘情况,如果有的话)。

多显示器支持很漂亮,但有些错误。我花了很多时间试图让窗户刷新。

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

更新:多个监视器支持与VS 2010 SP1相当稳固。

答案 8 :(得分:0)

如果你可以让你的老板为$ 10,000 + Visual Studio Ultimate Edition而流行,那么IntelliTrace就是一个令人信服的理由来升级你的环境并为其提供足够的投资理由。

答案 9 :(得分:0)

使用dynamic数据类型和optional参数可以更轻松地进行COM集成。

答案 10 :(得分:0)

对我来说有两件事:

  1. 可选参数 - 因为我厌倦了使用相同方法的X版本污染类(重载)
  2. 动态关键字 - 因为C#中泛型的表现力是一个笑话,这样我至少可以“写出我的意思”而不用箍,当然还有执行速度惩罚
  3. 代码越紧凑(即如果你表达的想法没有添加“哦,如何避免语言的限制Y”),越好,因为代码更容易维护而且更难做出愚蠢(或更糟)错误。

答案 11 :(得分:-1)

没有令人信服的稳定性或安全原因需要切换。这不应该是你老板的关注吗?