【问题标题】:Is the "C# Language Specifications" updated for C# 6.0 or 7.0 yet?C# 6.0 或 7.0 的“C# 语言规范”是否已更新?
【发布时间】:2017-08-26 08:48:07
【问题描述】:

C# 已经是 7.0。但是C# Language Specifications 仍然适用于 5.0。

当我在文档中找不到可空类型的 GetValueOrDefault() 时,我意识到规范已经过时。

我想知道规范是否已经更新,至少在 6.0 中?

【问题讨论】:

  • 注意:你永远不会在规范中找到GetValueOrDefault(),因为那是part of the CLR,而不是C#规范。
  • CLR 没有实现语言,所以我不是那个意思。没有“C# 标准库”,所以我不是这个意思。有 .NET 框架,这就是定义 GetValueOrDefault() 的地方。该方法自 .NET 2.0 以来就存在(当引入泛型类型时,包括 Nullable<T>),甚至在最近发布的规范 (C# 5) 中都没有提到它。它根本不是,也永远不可能是语言规范的一部分。它与 .NET 完全不同。
  • 这个问题不是题外话。它不要求推荐一本书。它询问 C# 引用的位置和状态。这是一个有效的问题。大多数 C# 开发人员关心的问题。鉴于当前参考文献的非官方状态,这也是1年前的答案无法回答的问题

标签: c# c#-6.0 c#-7.0


【解决方案1】:

The current status is:

但这些只是 C# 语言的规范,它们没有指定存在于基类库中的类型和成员(各种语言功能所需的一些例外情况除外)。直到最近,每个框架都自己定义了自己的库,但现在即使是标准化的,尽管.Net Standard

【讨论】:

    【解决方案2】:

    我没有在 Microsoft 或 ECMA 网站上找到 C# 6 和 7 的任何官方语言规范,但这里有几个链接。

    虽然 Microsoft 在这些链接上的 C# 6 和 7 文档很简洁,但 * 页面有很多示例、详细信息和封面陷阱。

    对于 C# 7

    What's new in C# 7 在微软网站上。

    对于 C# 6

    What's New in C# 6 在微软网站上。

    适用于 C# 5 及更早版本

    如果有人在寻找 C# 版本 5、4 或 2 规范时偶然发现这个问题,请联系 Jon Skeet,C# in Depth 页面汇集了所有规格的精美集合。

    附注我故意粘贴他页面的图像快照(而不是文本格式的内容),这样我就不会从他的页面中获取流量。

    【讨论】:

    • “我故意粘贴他页面的图像快照(而不是文本格式的内容),这样我就不会从他的页面中获取流量。”这就是 Al Gore 创建超链接的原因?
    • 为了记录,我对直接包含链接绝对没有问题。