85

I know where to find the C# 5 Language Specification but I cannot find the C# 6 Language Specification anywhere.

Where is the C# 6 Language Specification?

Community
  • 1
  • 1
Alex Booker
  • 10,487
  • 1
  • 24
  • 34
  • 7
    But trying to google for something that doesn't exist (especially some un-googly keyword like "C#") can be extremely unsatisfying. Stack Overflow was the first place that told me there is no such thing (yet?). Which other Stack Exchange site would you recommend instead for this kind of request? – Wormbo Jul 25 '15 at 07:21
  • 31
    Asking for a language's formal specification is very different from "asking for a book, tool" etc. The rule exists to discourage lazy questions. A language's specification on the other hand in indispensable for someone that wants to create eg. an analyzer or parser – Panagiotis Kanavos Jul 27 '15 at 08:18
  • 25
    Voting to re-open this question as it is exactly the sort of thing that people will come to SO for, when looking for the answer (as I just did). – David Arno Jul 27 '15 at 22:34
  • 3
    @DavidArno agreed, that's why i'm here today, 2015-10-05 ... even if there is no finalized c# 6.0 language specification yet available, imho there should at least be a *draft* version online that is easy to locate. https://github.com/dotnet/roslyn is not helpful as it is more about implementing c# and vb than about the c# language specification. [Standard ECMA-334 C# Language Specification 4th edition (June 2006)](http://www.ecma-international.org/publications/standards/Ecma-334.htm) is outdated. ***Microsoft, we need this!*** – gerryLowry Oct 05 '15 at 11:19
  • 2
    ***Microsoft***, this specification should be available directly online in order to make it searchable; not just as a downloadable document! Often Eric Lippert answers SO questions with "... you can find this in the C# specs...", but unfortunately online searches do not point us to these specs! – Olivier Jacot-Descombes Dec 04 '15 at 14:05
  • 4
    After installing Visual Studio 2015, I was also quite disappointed to find that `C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC#\Specifications\1033\CSharp Language Specification.docx` (where `14.0` refers to VS2015) is just a copy of the __old__ C# 5 spec, not a new spec reflecting the "reality" of VS2015 and C# 6. – Jeppe Stig Nielsen May 17 '16 at 11:50
  • Stack Overflow does not aspire to be a web traffic router. This page was rightfully closed and should remain closed because it is literally asking for an external reference. – mickmackusa Jul 24 '19 at 11:58

3 Answers3

33

At time of writing (May 2016) Microsoft hasn't yet finished updating the spec for C#6. In the meantime, I put up Microsoft's latest current draft of the C#6 spec here: https://github.com/ljw1004/csharpspec/blob/gh-pages/README.md

This current draft is almost finished, save for a few remaining TODO comments and checking. (This version has been converted into github+markdown, but it also has links to download DOCX and PDF versions of the spec, and a link to download the grammar in ANTLR format).

For a complete list of all spec changes from C#5 to C#6, see the pull request: https://github.com/ljw1004/csharpspec/pull/1/files

(Why hasn't Microsoft yet got around to officially releasing the C#6 spec? because of work in progress to align with ECMA, which of course takes time; it seemed a shame to expend effort on a release of the C#6 spec now only to have a subsequent version of the C#6 spec come out later after alignment with ECMA).

Lucian Wischik
  • 2,160
  • 1
  • 20
  • 25
  • Any idea where I can find details on the `when` keyword? I have only found bits and pieces, and it's more about the exception filtering as a general topic rather than the details on the keyword. – David Pine Jul 26 '16 at 11:13
32

There aren't specification for C# 6.0 at the same level there used to be for previous versions.

The closest thing is the design notes for Roslyn on CodePlex (and moving forward on GitHub).

Here's a list of the C# features:

https://roslyn.codeplex.com/wikipage?title=Language%20Feature%20Status&referringTitle=Documentation

And here are the notes for the null-propagating operator for example:

https://roslyn.codeplex.com/discussions/540883


Since the language design team moved to GitHub you can continue following the Design Notes filter on the Roslyn repository to see C# 7.0 coming into existence:

https://github.com/dotnet/roslyn/labels/Design%20Notes

i3arnon
  • 113,022
  • 33
  • 324
  • 344
2

The latest draft of the C# 6 specification is at https://github.com/dotnet/csharplang/blob/master/spec/README.md

Neal Gafter
  • 3,293
  • 20
  • 16