Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions docs/csharp/language-reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,31 +32,31 @@ This section provides reference material about C# keywords, operators, special c
Includes code snippets that demonstrate the cause and correction of C# compiler errors and warnings.

[C# Language Specification](../../../_csharplang/spec/introduction.md)
The C# 6.0 language specification. This is a draft proposal for the C# 6.0 language. Version 5.0 has been released in December 2017 as the [Standard ECMA-334 5th Edition](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-334.pdf) document.
The C# 6.0 language specification. This is a draft proposal for the C# 6.0 language. This document will be refined through work with the ECMA C# standards committee. Version 5.0 has been released in December 2017 as the [Standard ECMA-334 5th Edition](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-334.pdf) document.

The features that have been implemented in C# versions after 6.0 are represented in language specification proposals. These documents describe the deltas to the language spec in order to add these new features.
The features that have been implemented in C# versions after 6.0 are represented in language specification proposals. These documents describe the deltas to the language spec in order to add these new features. These are in draft proposal form. These specifications will be refined and submitted to the ECMA standards committee for formal review and incorporation into a future version of the C# Standard.

[C# 7.0 Language Proposals](../../../_csharplang/proposals/csharp-7.0/pattern-matching.md)
[C# 7.0 Specification Proposals](../../../_csharplang/proposals/csharp-7.0/pattern-matching.md)
There are a number of new features implemented in C# 7.0. They include pattern matching, local functions, out variable declarations, throw expressions, binary literals, and digit separators. This folder contains the specifications for each of those features.

[C# 7.1 Language Proposals](../../../_csharplang/proposals/csharp-7.1/async-main.md)
[C# 7.1 Specification Proposals](../../../_csharplang/proposals/csharp-7.1/async-main.md)
There are new features added in C# 7.1. First, you can write a `Main` method that returns `Task` or `Task<int>`. This enables you to add the `async` modifier to `Main`. The `default` expression can be used without a type in locations where the type can be inferred. Also, tuple member names can be inferred. Finally, pattern matching can be used with generics.

[C# 7.2 Language Proposals](../../../_csharplang/proposals/csharp-7.2/readonly-ref.md)
[C# 7.2 Specification Proposals](../../../_csharplang/proposals/csharp-7.2/readonly-ref.md)
C# 7.2 added a number of small features. You can pass arguments by readonly reference using the `in` keyword. There are a number of low-level changes to support compile-time safety for `Span` and related types. You can use named arguments where later arguments are positional, in some situations. The `private protected` access modifier enables you to specify that callers are limited to derived types implemented in the same assembly. The `?:` operator can resolve to a reference to a variable. You can also format hexadecimal and binary numbers using a leading digit separator.

[C# 7.3 Language Proposals](../../../_csharplang/proposals/csharp-7.3/blittable.md)
[C# 7.3 Specification Proposals](../../../_csharplang/proposals/csharp-7.3/blittable.md)
C# 7.3 is another point release that includes several small updates. You can use new constraints on generic type parameters. Other changes make it easier to work with `fixed` fields, including using [`stackalloc`](./operators/stackalloc.md) allocations. Local variables declared with the `ref` keyword may be reasssigned to refer to new storage. You can place attributes on auto-implemented properties that target the compiler-generated backing field. Expression variables can be used in initializers. Tuples can be compared for equality (or inequality). There have also been some improvements to overload resolution.

[C# 8.0 Language Proposals](../../../_csharplang/proposals/csharp-8.0/nullable-reference-types.md)
C# 8.0 is available in preview. The following proposals are the current versions of the specifications for those features. Some are more complete; some are still a work in progress. The features that have shipped in previews include nullable reference types, recursive pattern matching, async streams, ranges and indexes, pattern based using and using declarations, and null coalescing assignment.
[C# 8.0 Specification Proposals](../../../_csharplang/proposals/csharp-8.0/nullable-reference-types.md)
C# 8.0 is available with .NET Core 3.0. The features include nullable reference types, recursive pattern matching, default interface members, async streams, ranges and indexes, pattern based using and using declarations, null coalescing assignment, and readonly instance members.

## Related Sections

[C# Guide](../index.md)
Provides a portal to Visual C# documentation.

[Using the Visual Studio Development Environment for C#](/visualstudio/csharp-ide/using-the-visual-studio-development-environment-for-csharp)
[Using the Visual Studio Development Environment for C#](/visualstudio/get-started/csharp)
Provides links to conceptual and task topics that describe the IDE and Editor.

[C# Programming Guide](../programming-guide/index.md)
Expand Down
24 changes: 14 additions & 10 deletions docs/csharp/language-reference/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@
href: ../../../_csharplang/spec/unsafe-code.md
- name: Documentation comments
href: ../../../_csharplang/spec/documentation-comments.md
- name: C# 7.0 language proposals
- name: C# 7.0 specification proposals
items:
- name: Pattern matching
href: ../../../_csharplang/proposals/csharp-7.0/pattern-matching.md
Expand All @@ -569,7 +569,7 @@
href: ../../../_csharplang/proposals/csharp-7.0/binary-literals.md
- name: Digit separators
href: ../../../_csharplang/proposals/csharp-7.0/digit-separators.md
- name: C# 7.1 language proposals
- name: C# 7.1 specification proposals
items:
- name: Async main method
href: ../../../_csharplang/proposals/csharp-7.1/async-main.md
Expand All @@ -579,7 +579,7 @@
href: ../../../_csharplang/proposals/csharp-7.1/infer-tuple-names.md
- name: Pattern matching with generics
href: ../../../_csharplang/proposals/csharp-7.1/generics-pattern-match.md
- name: C# 7.2 language proposals
- name: C# 7.2 specification proposals
items:
- name: Readonly references
href: ../../../_csharplang/proposals/csharp-7.2/readonly-ref.md
Expand All @@ -593,7 +593,7 @@
href: ../../../_csharplang/proposals/csharp-7.2/conditional-ref.md
- name: Leading digit separator
href: ../../../_csharplang/proposals/csharp-7.2/leading-separator.md
- name: C# 7.3 language proposals
- name: C# 7.3 specfication proposals
items:
- name: Unmanaged generic type constraints
href: ../../../_csharplang/proposals/csharp-7.3/blittable.md
Expand All @@ -607,25 +607,29 @@
href: ../../../_csharplang/proposals/csharp-7.3/stackalloc-array-initializers.md
- name: Auto-implemented property field-targeted attributes
href: ../../../_csharplang/proposals/csharp-7.3/auto-prop-field-attrs.md
- name: expression variables in initializers
- name: Expression variables in initializers
href: ../../../_csharplang/proposals/csharp-7.3/expression-variables-in-initializers.md
- name: Tuple equality (==) and inequality (!=)
href: ../../../_csharplang/proposals/csharp-7.3/tuple-equality.md
- name: Improved overload candidates
href: ../../../_csharplang/proposals/csharp-7.3/improved-overload-candidates.md
- name: C# 8.0 language proposals
- name: C# 8.0 specification proposal
items:
- name: Null reference types - proposal
- name: Nullable reference types - proposal
href: ../../../_csharplang/proposals/csharp-8.0/nullable-reference-types.md
- name: nullable reference types - specification
- name: Nullable reference types - specification
href: ../../../_csharplang/proposals/csharp-8.0/nullable-reference-types-specification.md
- name: Recursive pattern matching
href: ../../../_csharplang/proposals/csharp-8.0/patterns.md
- name: async streams
- name: Default interface members
href: ../../../_csharplang/proposals/csharp-8.0/default-interface-methods.md
- name: Async streams
href: ../../../_csharplang/proposals/csharp-8.0/async-streams.md
- name: Ranges
href: ../../../_csharplang/proposals/csharp-8.0/ranges.md
- name: Pattern based using and using declarations
href: ../../../_csharplang/proposals/csharp-8.0/using.md
- name: null coalescing assignment
- name: Null coalescing assignment
href: ../../../_csharplang/proposals/csharp-8.0/null-coalescing-assignment.md
- name: Readonly instance members
href: ../../../_csharplang/proposals/csharp-8.0/readonly-instance-members.md