[英]Why should I upgrade to c# 4.0?
我知道C#4.0中有一些不错的新功能,但是我一生都无法想到升级现有项目或切换到新项目的迫切原因。
我见过一些帖子,人们说过,如果他们的托管服务未提供.Net 4,则他们会找到另一个提供商,因为.Net 4符合他们的发展方向<?>
。
现在,我的老板正试图让我同意将我们所有的生产环境切换到C#4并立即执行。
那么问题来了,是否有人出于令人信服的原因开始使用C#4或将项目转换为C#4? 是否只有您需要的一项功能可以使您的生活变得如此轻松?
Scott Guthrie在其发布的博客文章中详细介绍了.NET 4的一般功能 。 另一个很棒的资源是http://www.asp.net/learn/whitepapers/aspnet4上的白皮书。 但是,我怀疑您将立即需要这些新功能中的一个/任何一个。 正如Scott Hanselman所说:
.NET 4中有很多新内容,但不是以“压倒性的我需要重新学习所有内容”的方式。
因此,是否应该升级取决于其他各种因素。 让我想到一些原因:
与您的经理进行公开对话似乎很适合了解他升级的原因。 我认为,因为它有光泽不是一个令人信服的原因。
作为参考,这个过时的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集成要容易得多。
对我来说,有两件事:
代码越紧凑(即,如果您在不加“哦,如何避免限制语言Y”的情况下表达想法),则越好,因为代码易于维护,并且变得更愚蠢(或更糟)。 )错误。
没有令人信服的稳定性或安全性理由要切换。 那不是你老板的事吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.