使用C#3.0功能有什么缺点吗?

Cur*_*ous 22 language-features c#-3.0

我喜欢C#3.0特性,特别是lambda表达式,自动实现的属性,或者在适当的情况下也隐式输入局部变量(var关键字),但当我的老板透露我正在使用它们时,他让我不要在工作中使用任何C#3.0功能.有人告诉我,对于大多数开发人员而言,这些功能并不标准且令人困惑,其实用性值得怀疑.我被限制只使用C#2.0功能,他也在考虑禁止匿名方法.

由于我们的目标是.NET Framework 3.5,因此我看不出这些限制的任何原因.在我看来,也许唯一的缺点是我的几个同事和老板(也是程序员)必须学习一些C#3.0的基础知识,这应该不难.你怎么看待这件事?我的老板是对的,我错过了什么吗?在C#是主要编程语言的开发公司中,有没有充分的理由限制这种限制?

Ode*_*ded 10

我有类似的经历(要求不使用泛型,因为可能会让我的同事感到困惑).

事实是,我们现在使用泛型而非我的同事正在使用它们.他们可能没有掌握如何创建泛型类,但他们确实理解如何使用它们.

我的观点是,任何开发人员都可以学习如何使用这些语言功能.它们起初可能看起来很先进,但随着人们习惯它们,新的冲击减弱了.

使用这些功能(或任何新的语言功能)的主要理由是,这是一种简单易用的方法,可以帮助我的同事提高他们的技能,而不是停滞不前.

至于你的特殊问题 - 不使用lambdas.对BCL的大量更新具有将委托作为参数的重载 - 这些在很多情况下最容易表示为lambda,而不是以这种方式使用它们忽略了BCL的一些新的和更新的用法.

关于你的同伴无法学习lambdas的问题 - 我发现Jon Skeets C#深入探讨了他们如何从代表那里以一种易于理解和真正大开眼界的方式进化.我建议你为老板和同事索取一份副本.

  • 我的第二个建议是为你的老板和你的同事获取深度C#的副本.为了以防万一,附上一些备用副本也许不是一个坏主意.你永远不知道什么时候你需要在紧急情况下复制. (5认同)
  • 最近我一直在讨论如何用C#做事,而且由于我对C#3功能的更高级知识,我可以将许多*范例*和模式从其他语言转换为C#,而其他人则吹嘘如何静态和糟糕的C#是.这让我意识到在你抱怨之前你必须真正了解一些事情.这也让我意识到,当你更熟悉一门语言时,编程就更容易了. (4认同)

Jon*_*son 7

您的老板需要了解语言(和其他)改进旨在为开发人员提供更多功能,并使他们更有效地完成手头的任务,如果他不会因为未知原因而允许他们:

  • 开发团队并没有发挥最大的潜力.
  • 该公司没有从提高效率/生产力中受益.

像其他人一样,如果开发人员无法跟上他们日常使用的语言的一些最新改进,那么开发人员就不值得.我怀疑你的老板最近没有做太多编码,而且他无法理解推动这一决定的最新语言改进.