代码之家  ›  专栏  ›  技术社区  ›  Abel

在动态和可选参数之后,C 4.0的其他新功能是什么?

  •  2
  • Abel  · 技术社区  · 15 年前

    所以,C 4.0昨天发布了。它介绍了备受争议的 dynamic 关键字、命名参数和可选参数。较小的改善是隐性的 ref 识别COM方法的索引和默认属性、反向和协同方差(实际上是一个.NET CLR特性,而不仅仅是C特性)以及…

    是真的吗?是 动态 可选/命名参数是对c的唯一真正改进。还是我错过了什么?我不是在抱怨,但在C 2.0(泛型)和C 3.0(lambda,linq)之后,它看起来有点弱。也许语言才真正成熟?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Jon Skeet    15 年前

    差不多了,是的。在锁定和事件周围有一些非常微小的变化,但通常这些变化不会被注意到。有关事件更改,请参见 Chris Burrows' blog series ;关于锁定,请参见 Eric Lippert's blog . 简而言之,锁定现在更加可靠-它使用了 Monitor.Enter 这样它就可以检测是否在异步异常情况下获取锁。类字段的事件现在是无锁的,在声明类中引用类字段的事件访问器(添加/删除)将引用事件而不是字段。

    这绝对是一组比2和3小的变化,但我认为在很多方面这是件好事——我认为开发人员需要一定的时间来“适应”当前的特性。2和3真的 大的 功能发布…而且其中一些特性还没有被广泛理解,IMO。

    我相信这不会是C进化的终结-我有一些想法,所以我敢打赌C团队有更多的想法-但是只有这么多可以打包到一个版本中。尽管我怀疑大多数开发人员实际上不会经常使用动态类型,但就语言本身而言,这是一个巨大的变化,IMO——要正确使用是一件非常复杂的事情。我并不惊讶团队没有太多时间在同一发布周期中创建更多的特性。

    别忘了还有VS2010需要改进,它将所有新功能集成到VS2010中,并对Visual Studio本身进行了相当重要的更改。

    值得一提的是,尽管协方差和反方差 毫无疑问,clr特性——事实上是从clr2.0开始——它们仍然是语言和库特性,就像在clr、framework和language中的泛型和可以为空的值类型一样。

        2
  •  1
  •   anonymous    15 年前

    有一个更改列表 here .

        3
  •  0
  •   NibblyPig    15 年前

    我建议你买本课本。我一步一步地在Visual Studio 2010中寻找我不知道的新功能和新东西。这是一系列很棒的书,我建议你去拿。