diff --git a/.openpublishing.redirection.csharp.json b/.openpublishing.redirection.csharp.json index cb45587fb53be..b2e53879fc6d0 100644 --- a/.openpublishing.redirection.csharp.json +++ b/.openpublishing.redirection.csharp.json @@ -108,26 +108,6 @@ "source_path_from_root": "/redirections/proposals/csharp-7.3/tuple-equality.md", "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#121211-tuple-equality-operators" }, - { - "source_path_from_root": "/redirections/proposals/csharp-8.0/nullable-reference-types.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/redirections/proposals/csharp-8.0/nested-stackalloc.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#164127-stackalloc" - }, - { - "source_path_from_root": "/redirections/proposals/csharp-8.0/readonly-instance-members.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#16411-properties" - }, - { - "source_path_from_root": "/redirections/proposals/csharp-8.0/null-coalescing-assignment.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1222-assignment-operators" - }, - { - "source_path_from_root": "/redirections/proposals/csharp-8.0/async-streams.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#13953-await-foreach" - }, { "source_path_from_root": "/redirections/proposals/csharp-9.0/nullable-reference-types-specification.md", "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" @@ -1473,18 +1453,6 @@ "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.3/index.md", "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-7.3/ref-local-reassignment" }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-8.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-8.0/static-local-functions.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#1364-local-function-declarations" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-8.0/nullable-reference-types.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, { "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-reference-types-specification.md", "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" diff --git a/docfx.json b/docfx.json index d99cedae0e34d..51d38a8ebe0fb 100644 --- a/docfx.json +++ b/docfx.json @@ -48,7 +48,6 @@ }, { "files": [ - "csharp-8.0/*.md", "csharp-9.0/*.md", "csharp-10.0/*.md", "csharp-11.0/*.md", @@ -62,24 +61,6 @@ "**/README.md", "inactive/**", "rejected/**", - "csharp-8.0/alternative-interpolated-verbatim.md", - "csharp-8.0/async-using.md", - "csharp-8.0/constraints-in-overrides.md", - "csharp-8.0/constructed-unmanaged.md", - "csharp-8.0/notnull-constraint.md", - "csharp-8.0/obsolete-accessor.md", - "csharp-8.0/shadowing-in-nested-functions.md", - "csharp-8.0/static-local-functions.md", - "csharp-8.0/unconstrained-null-coalescing.md", - "csharp-8.0/nullable-reference-types.md", - "csharp-8.0/nullable-reference-types-specification.md", - "csharp-8.0/nested-stackalloc.md", - "csharp-8.0/readonly-instance-members.md", - "csharp-8.0/null-coalescing-assignment.md", - "csharp-8.0/async-streams.md", - "csharp-8.0/ranges.md", - "csharp-8.0/using.md", - "csharp-8.0/default-interface-methods.md", "csharp-9.0/nullable-reference-types-specification.md", "csharp-9.0/nullable-constructor-analysis.md", "csharp-9.0/nullable-parameter-default-value-analysis.md", @@ -524,7 +505,6 @@ }, "ms.date": { "_csharpstandard/standard/*.md": "09/12/2025", - "_csharplang/proposals/csharp-8.0/*.md": "09/10/2019", "_csharplang/proposals/csharp-9.0/*.md": "07/29/2020", "_csharplang/proposals/csharp-10.0/*.md": "08/07/2021", "_csharplang/proposals/csharp-11.0/*.md": "09/30/2022", @@ -638,7 +618,6 @@ "_csharpstandard/standard/standard-library.md": "Standard library", "_csharpstandard/standard/documentation-comments.md": "Documentation comments", "_csharpstandard/standard/Bibliography.md": "Bibliography", - "_csharplang/proposals/csharp-8.0/patterns.md": "Recursive pattern matching", "_csharplang/proposals/csharp-9.0/covariant-returns.md": "Covariant return types", "_csharplang/proposals/csharp-9.0/extending-partial-methods.md": "Extending partial methods", "_csharplang/proposals/csharp-9.0/extension-getenumerator.md": "Extension GetEnumerator support in foreach", @@ -765,7 +744,6 @@ "_csharpstandard/standard/standard-library.md": "This appendix lists requirements of the specification library. The C# language relies on these types for some of its behavior.", "_csharpstandard/standard/documentation-comments.md": "This appendix describes XML comments that are used to document your program.", "_csharpstandard/standard/Bibliography.md": "This appendix lists external standards referenced in this specification.", - "_csharplang/proposals/csharp-8.0/patterns.md": "This feature specification describes recursive pattern matching, where patterns can nest inside other patterns.", "_csharplang/proposals/csharp-9.0/covariant-returns.md": "This feature specification describes covariant return types, where overriding member declarations can return a type derived from the overridden member declaration.", "_csharplang/proposals/csharp-9.0/extending-partial-methods.md": "This feature specification describes extensions to partial methods. These extensions enable source generators to create or call partial methods.", "_csharplang/proposals/csharp-9.0/extension-getenumerator.md": "This feature specification describes the necessary pattern for an extension method to provide the GetEnumerator support in a foreach loop.", @@ -861,7 +839,6 @@ "titleSuffix": { "docs/**/*.md": ".NET", "_csharpstandard/standard/*.md": "C# language specification", - "_csharplang/proposals/csharp-8.0/*.md": "C# feature specifications", "_csharplang/proposals/csharp-9.0/*.md": "C# feature specifications", "_csharplang/proposals/csharp-10.0/*.md": "C# feature specifications", "_csharplang/proposals/csharp-11.0/*.md": "C# feature specifications", diff --git a/docs/csharp/language-reference/builtin-types/enum.md b/docs/csharp/language-reference/builtin-types/enum.md index 55a3f86ce7737..0f592c5245dbf 100644 --- a/docs/csharp/language-reference/builtin-types/enum.md +++ b/docs/csharp/language-reference/builtin-types/enum.md @@ -88,8 +88,8 @@ For more information, see the following sections of the [C# language specificati - [Enums](~/_csharpstandard/standard/enums.md) - [Enum values and operations](~/_csharpstandard/standard/enums.md#206-enum-values-and-operations) -- [Enumeration logical operators](~/_csharpstandard/standard/expressions.md#12143-enumeration-logical-operators) -- [Enumeration comparison operators](~/_csharpstandard/standard/expressions.md#12136-enumeration-comparison-operators) +- [Enumeration logical operators](~/_csharpstandard/standard/expressions.md#12153-enumeration-logical-operators) +- [Enumeration comparison operators](~/_csharpstandard/standard/expressions.md#12146-enumeration-comparison-operators) - [Explicit enumeration conversions](~/_csharpstandard/standard/conversions.md#1033-explicit-enumeration-conversions) - [Implicit enumeration conversions](~/_csharpstandard/standard/conversions.md#1024-implicit-enumeration-conversions) diff --git a/docs/csharp/language-reference/builtin-types/nullable-reference-types.md b/docs/csharp/language-reference/builtin-types/nullable-reference-types.md index b32e023fa9ef9..2d50ada7bfccc 100644 --- a/docs/csharp/language-reference/builtin-types/nullable-reference-types.md +++ b/docs/csharp/language-reference/builtin-types/nullable-reference-types.md @@ -72,10 +72,7 @@ There are two ways to control the nullable context. At the project level, you ca ## C# language specification -For more information, see the following proposals for the [C# language specification](~/_csharpstandard/standard/README.md): - -- [Nullable reference types](~/_csharplang/proposals/csharp-8.0/nullable-reference-types.md) -- [Draft nullable reference types specification](~/_csharplang/proposals/csharp-9.0/nullable-reference-types-specification.md) +For more information, see the [Nullable reference types](~/_csharpstandard/standard/types.md#89-reference-types-and-nullability) section of the [C# language specification](~/_csharpstandard/standard/README.md): ## See also diff --git a/docs/csharp/language-reference/builtin-types/struct.md b/docs/csharp/language-reference/builtin-types/struct.md index bf3a69ff9654b..3c2f4b448cc29 100644 --- a/docs/csharp/language-reference/builtin-types/struct.md +++ b/docs/csharp/language-reference/builtin-types/struct.md @@ -172,8 +172,8 @@ For more information, see the [Structs](~/_csharpstandard/standard/structs.md) s For more information about `struct` features, see the following feature proposal notes: -- [Readonly structs](~/_csharplang/proposals/csharp-7.2/readonly-ref.md#readonly-structs) -- [Readonly instance members](~/_csharplang/proposals/csharp-8.0/readonly-instance-members.md) +- [Readonly structs](~/_csharpstandard/standard/structs.md#1622-struct-modifiers) +- [Readonly instance members](~/_csharpstandard/standard/structs.md#163-struct-members) - [Parameterless struct constructors](~/_csharplang/proposals/csharp-10.0/parameterless-struct-constructors.md) - [Allow `with` expression on structs](~/_csharplang/proposals/csharp-10.0/record-structs.md#allow-with-expression-on-structs) - [Record structs](~/_csharplang/proposals/csharp-10.0/record-structs.md) diff --git a/docs/csharp/language-reference/compiler-messages/overloaded-operator-errors.md b/docs/csharp/language-reference/compiler-messages/overloaded-operator-errors.md index b356db406a1d7..9458f1b54d92d 100644 --- a/docs/csharp/language-reference/compiler-messages/overloaded-operator-errors.md +++ b/docs/csharp/language-reference/compiler-messages/overloaded-operator-errors.md @@ -298,7 +298,7 @@ To fix these errors, remove invalid conversion operators or restructure your typ - **CS0217**: *In order to be applicable as a short-circuit operator, a user-defined logical operator must have the same return type as the type of its 2 parameters.* - **CS0218**: *The type must contain declarations of operator true and operator false.* -These errors occur when you define logical operators incorrectly. Certain operators must be defined in pairs, and short-circuit operators have specific signature requirements. For more information, see [true and false operators](../operators/true-false-operators.md), [Boolean logical operators](../operators/boolean-logical-operators.md), and [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12153-user-defined-conditional-logical-operators). The following code demonstrates these errors: +These errors occur when you define logical operators incorrectly. Certain operators must be defined in pairs, and short-circuit operators have specific signature requirements. For more information, see [true and false operators](../operators/true-false-operators.md), [Boolean logical operators](../operators/boolean-logical-operators.md), and [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12163-user-defined-conditional-logical-operators). The following code demonstrates these errors: ```csharp class C diff --git a/docs/csharp/language-reference/keywords/const.md b/docs/csharp/language-reference/keywords/const.md index 4f940157f2f32..6cf386a436395 100644 --- a/docs/csharp/language-reference/keywords/const.md +++ b/docs/csharp/language-reference/keywords/const.md @@ -63,7 +63,7 @@ The following example demonstrates how to declare a local constant: For more information, see the following sections of the [C# language specification](~/_csharpstandard/standard/README.md): - [Constants](~/_csharpstandard/standard/classes.md#154-constants) -- [Constant expressions](~/_csharpstandard/standard/expressions.md#1224-constant-expressions) +- [Constant expressions](~/_csharpstandard/standard/expressions.md#1225-constant-expressions) ## See also diff --git a/docs/csharp/language-reference/keywords/interface.md b/docs/csharp/language-reference/keywords/interface.md index 22801588a779c..9b43f13c89d31 100644 --- a/docs/csharp/language-reference/keywords/interface.md +++ b/docs/csharp/language-reference/keywords/interface.md @@ -40,7 +40,6 @@ An interface declaration can contain the following members: - [A static constructor](../../programming-guide/classes-and-structs/constructors.md#static-constructors). - [Nested types](../../programming-guide/classes-and-structs/nested-types.md). - [Static fields, methods, properties, indexers, and events](static.md). -- [Member declarations using the explicit interface implementation syntax](~/_csharplang/proposals/csharp-8.0/default-interface-methods.md#explicit-implementation-in-interfaces). - Explicit access modifiers (the default access for abstract methods is [`public`](access-modifiers.md)). ## Default interface members @@ -90,7 +89,7 @@ The following example demonstrates interface implementation. In this example, th ## C# language specification -For more information, see the [Interfaces](~/_csharpstandard/standard/interfaces.md) section of the [C# language specification](~/_csharpstandard/standard/README.md), the feature specification for [C# 8 - Default interface members](~/_csharplang/proposals/csharp-8.0/default-interface-methods.md), and the feature spec for [C# 11 - static abstract members in interfaces](~/_csharplang/proposals/csharp-11.0/static-abstracts-in-interfaces.md). +For more information, see the [Interfaces](~/_csharpstandard/standard/interfaces.md) section of the [C# language specification](~/_csharpstandard/standard/README.md) and the feature spec for [C# 11 - static abstract members in interfaces](~/_csharplang/proposals/csharp-11.0/static-abstracts-in-interfaces.md). ## See also diff --git a/docs/csharp/language-reference/keywords/readonly.md b/docs/csharp/language-reference/keywords/readonly.md index ce902dd16b047..8272a4b492ab5 100644 --- a/docs/csharp/language-reference/keywords/readonly.md +++ b/docs/csharp/language-reference/keywords/readonly.md @@ -97,11 +97,6 @@ The method essentially returns a `readonly` reference together with the instance [!INCLUDE[CSharplangspec](~/includes/csharplangspec-md.md)] -You can also see the language specification proposals: - -- [readonly ref and readonly struct](~/_csharplang/proposals/csharp-7.2/readonly-ref.md) -- [readonly struct members](~/_csharplang/proposals/csharp-8.0/readonly-instance-members.md) - ## See also - [Add readonly modifier (style rule IDE0044)](../../../fundamentals/code-analysis/style-rules/ide0044.md) diff --git a/docs/csharp/language-reference/operators/addition-operator.md b/docs/csharp/language-reference/operators/addition-operator.md index d17c85579c35a..9bd1eb56cb85a 100644 --- a/docs/csharp/language-reference/operators/addition-operator.md +++ b/docs/csharp/language-reference/operators/addition-operator.md @@ -72,7 +72,7 @@ A user-defined type can [overload](operator-overloading.md) the `+` operator. Wh ## C# language specification -For more information, see the [Unary plus operator](~/_csharpstandard/standard/expressions.md#1292-unary-plus-operator) and [Addition operator](~/_csharpstandard/standard/expressions.md#12115-addition-operator) sections of the [C# language specification](~/_csharpstandard/standard/README.md). For more information on overloading the compound assignment operators in C# 14 and later, see the [user defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. +For more information, see the [Unary plus operator](~/_csharpstandard/standard/expressions.md#1292-unary-plus-operator) and [Addition operator](~/_csharpstandard/standard/expressions.md#12125-addition-operator) sections of the [C# language specification](~/_csharpstandard/standard/README.md). For more information on overloading the compound assignment operators in C# 14 and later, see the [user defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. ## See also diff --git a/docs/csharp/language-reference/operators/arithmetic-operators.md b/docs/csharp/language-reference/operators/arithmetic-operators.md index 19340e3d067c5..6e59c88f175e1 100644 --- a/docs/csharp/language-reference/operators/arithmetic-operators.md +++ b/docs/csharp/language-reference/operators/arithmetic-operators.md @@ -138,7 +138,7 @@ For the `float` and `double` operands, the result of `x % y` for the finite `x` > [!NOTE] > This method of computing the remainder is analogous to the method used for integer operands, but different from the IEEE 754 specification. If you need the remainder operation that complies with the IEEE 754 specification, use the method. -For information about the behavior of the `%` operator with non-finite operands, see the [Remainder operator](~/_csharpstandard/standard/expressions.md#12114-remainder-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For information about the behavior of the `%` operator with non-finite operands, see the [Remainder operator](~/_csharpstandard/standard/expressions.md#12124-remainder-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). For the `decimal` operands, the remainder operator `%` is equivalent to the [remainder operator]() of the type. @@ -282,12 +282,12 @@ For more information, see the following sections of the [C# language specificati - [Prefix increment and decrement operators](~/_csharpstandard/standard/expressions.md#1297-prefix-increment-and-decrement-operators) - [Unary plus operator](~/_csharpstandard/standard/expressions.md#1292-unary-plus-operator) - [Unary minus operator](~/_csharpstandard/standard/expressions.md#1293-unary-minus-operator) -- [Multiplication operator](~/_csharpstandard/standard/expressions.md#12112-multiplication-operator) -- [Division operator](~/_csharpstandard/standard/expressions.md#12113-division-operator) -- [Remainder operator](~/_csharpstandard/standard/expressions.md#12114-remainder-operator) -- [Addition operator](~/_csharpstandard/standard/expressions.md#12115-addition-operator) -- [Subtraction operator](~/_csharpstandard/standard/expressions.md#12116-subtraction-operator) -- [Compound assignment](~/_csharpstandard/standard/expressions.md#12224-compound-assignment) +- [Multiplication operator](~/_csharpstandard/standard/expressions.md#12122-multiplication-operator) +- [Division operator](~/_csharpstandard/standard/expressions.md#12123-division-operator) +- [Remainder operator](~/_csharpstandard/standard/expressions.md#12124-remainder-operator) +- [Addition operator](~/_csharpstandard/standard/expressions.md#12125-addition-operator) +- [Subtraction operator](~/_csharpstandard/standard/expressions.md#12126-subtraction-operator) +- [Compound assignment](~/_csharpstandard/standard/expressions.md#12234-compound-assignment) - [The checked and unchecked operators](~/_csharpstandard/standard/expressions.md#12820-the-checked-and-unchecked-operators) - [Numeric promotions](~/_csharpstandard/standard/expressions.md#1247-numeric-promotions) - [User defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) diff --git a/docs/csharp/language-reference/operators/assignment-operator.md b/docs/csharp/language-reference/operators/assignment-operator.md index 2bdf08a57ea6b..8ba41f228993d 100644 --- a/docs/csharp/language-reference/operators/assignment-operator.md +++ b/docs/csharp/language-reference/operators/assignment-operator.md @@ -81,7 +81,7 @@ If a user-defined type overloads a binary operator `op`, the `op=` operator, if ## C# language specification -For more information, see the [Assignment operators](~/_csharpstandard/standard/expressions.md#1222-assignment-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md) and the [User defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. +For more information, see the [Assignment operators](~/_csharpstandard/standard/expressions.md#1223-assignment-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md) and the [User defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. ## See also diff --git a/docs/csharp/language-reference/operators/bitwise-and-shift-operators.md b/docs/csharp/language-reference/operators/bitwise-and-shift-operators.md index 95a1102d5c306..e6b9303a024a7 100644 --- a/docs/csharp/language-reference/operators/bitwise-and-shift-operators.md +++ b/docs/csharp/language-reference/operators/bitwise-and-shift-operators.md @@ -195,9 +195,9 @@ If a user-defined type `T` overloads the `<<`, `>>`, or `>>>` operator, the type For more information, see the following sections of the [C# language specification](~/_csharpstandard/standard/README.md): - [Bitwise complement operator](~/_csharpstandard/standard/expressions.md#1295-bitwise-complement-operator) -- [Shift operators](~/_csharpstandard/standard/expressions.md#1212-shift-operators) -- [Logical operators](~/_csharpstandard/standard/expressions.md#1214-logical-operators) -- [Compound assignment](~/_csharpstandard/standard/expressions.md#12224-compound-assignment) +- [Shift operators](~/_csharpstandard/standard/expressions.md#1213-shift-operators) +- [Logical operators](~/_csharpstandard/standard/expressions.md#1215-logical-operators) +- [Compound assignment](~/_csharpstandard/standard/expressions.md#12234-compound-assignment) - [Numeric promotions](~/_csharpstandard/standard/expressions.md#1247-numeric-promotions) - [C# 11 - Relaxed shift requirements](~/_csharplang/proposals/csharp-11.0/relaxing_shift_operator_requirements.md) - [C# 11 - Logical right-shift operator](~/_csharplang/proposals/csharp-11.0/unsigned-right-shift-operator.md) diff --git a/docs/csharp/language-reference/operators/boolean-logical-operators.md b/docs/csharp/language-reference/operators/boolean-logical-operators.md index 6bce21c600369..555a6c7d2741d 100644 --- a/docs/csharp/language-reference/operators/boolean-logical-operators.md +++ b/docs/csharp/language-reference/operators/boolean-logical-operators.md @@ -184,16 +184,16 @@ For the complete list of C# operators ordered by precedence level, see the [Oper A user-defined type can [overload](operator-overloading.md) the `!`, `&`, `|`, and `^` operators. When a binary operator is overloaded, the corresponding compound assignment operator is also implicitly overloaded. Beginning with C# 14, a user-defined type can explicitly overload the compound assignment operators to provide a more efficient implementation. Typically, a type overloads these operators because the value can be updated in place, rather than allocating a new instance to hold the result of the binary operation. If a type doesn't provide an explicit overload, the compiler generates the implicit overload. -A user-defined type can't overload the conditional logical operators `&&` and `||`. However, if a user-defined type overloads the [true and false operators](true-false-operators.md) and the `&` or `|` operator in a certain way, the `&&` or `||` operation, respectively, can be evaluated for the operands of that type. For more information, see the [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12153-user-defined-conditional-logical-operators ) section of the [C# language specification](~/_csharpstandard/standard/README.md). +A user-defined type can't overload the conditional logical operators `&&` and `||`. However, if a user-defined type overloads the [true and false operators](true-false-operators.md) and the `&` or `|` operator in a certain way, the `&&` or `||` operation, respectively, can be evaluated for the operands of that type. For more information, see the [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12163-user-defined-conditional-logical-operators ) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## C# language specification For more information, see the following sections of the [C# language specification](~/_csharpstandard/standard/README.md): - [Logical negation operator](~/_csharpstandard/standard/expressions.md#1294-logical-negation-operator) -- [Logical operators](~/_csharpstandard/standard/expressions.md#1214-logical-operators) -- [Conditional logical operators](~/_csharpstandard/standard/expressions.md#1215-conditional-logical-operators) -- [Compound assignment](~/_csharpstandard/standard/expressions.md#12224-compound-assignment) +- [Logical operators](~/_csharpstandard/standard/expressions.md#1215-logical-operators) +- [Conditional logical operators](~/_csharpstandard/standard/expressions.md#1216-conditional-logical-operators) +- [Compound assignment](~/_csharpstandard/standard/expressions.md#12234-compound-assignment) - [User defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) ## See also diff --git a/docs/csharp/language-reference/operators/comparison-operators.md b/docs/csharp/language-reference/operators/comparison-operators.md index 736e9c84f765f..5da7e14a5fdb0 100644 --- a/docs/csharp/language-reference/operators/comparison-operators.md +++ b/docs/csharp/language-reference/operators/comparison-operators.md @@ -65,7 +65,7 @@ If a type overloads one of the `<` or `>` operators, it must overload both `<` a ## C# language specification -For more information, see the [Relational and type-testing operators](~/_csharpstandard/standard/expressions.md#1213-relational-and-type-testing-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Relational and type-testing operators](~/_csharpstandard/standard/expressions.md#1214-relational-and-type-testing-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## See also diff --git a/docs/csharp/language-reference/operators/conditional-operator.md b/docs/csharp/language-reference/operators/conditional-operator.md index 88f35bd3fdfa4..1bcf038016f35 100644 --- a/docs/csharp/language-reference/operators/conditional-operator.md +++ b/docs/csharp/language-reference/operators/conditional-operator.md @@ -79,7 +79,7 @@ A user-defined type can't overload the conditional operator. ## C# language specification -For more information, see the [Conditional operator](~/_csharpstandard/standard/expressions.md#1219-conditional-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Conditional operator](~/_csharpstandard/standard/expressions.md#1220-conditional-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). Specifications for newer features are: diff --git a/docs/csharp/language-reference/operators/delegate-operator.md b/docs/csharp/language-reference/operators/delegate-operator.md index e0b995b259fa8..f940870824729 100644 --- a/docs/csharp/language-reference/operators/delegate-operator.md +++ b/docs/csharp/language-reference/operators/delegate-operator.md @@ -57,7 +57,7 @@ Action a = () => StaticFunction(); ## C# language specification -For more information, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1220-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1221-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## See also diff --git a/docs/csharp/language-reference/operators/equality-operators.md b/docs/csharp/language-reference/operators/equality-operators.md index 7abe34a036f3f..2439e3d493840 100644 --- a/docs/csharp/language-reference/operators/equality-operators.md +++ b/docs/csharp/language-reference/operators/equality-operators.md @@ -76,7 +76,7 @@ Two [delegate](../../programming-guide/delegates/index.md) operands of the same :::code language="csharp" interactive="try-dotnet-method" source="snippets/shared/EqualityOperators.cs" id="SnippetCheckReceiver"::: -For more information, see the [Delegate equality operators](~/_csharpstandard/standard/expressions.md#12139-delegate-equality-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Delegate equality operators](~/_csharpstandard/standard/expressions.md#12149-delegate-equality-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). Delegates that are produced from evaluation of semantically identical [lambda expressions](lambda-expressions.md) aren't equal, as the following example shows: @@ -102,7 +102,7 @@ public virtual bool Equals(T? other); ## C# language specification -For more information, see the [Relational and type-testing operators](~/_csharpstandard/standard/expressions.md#1213-relational-and-type-testing-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Relational and type-testing operators](~/_csharpstandard/standard/expressions.md#1214-relational-and-type-testing-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). For more information about equality of record types, see the [Equality members](~/_csharplang/proposals/csharp-9.0/records.md#equality-members) section of the [records feature proposal note](~/_csharplang/proposals/csharp-9.0/records.md). diff --git a/docs/csharp/language-reference/operators/is.md b/docs/csharp/language-reference/operators/is.md index fbbba7271d9ad..b375dc60afe87 100644 --- a/docs/csharp/language-reference/operators/is.md +++ b/docs/csharp/language-reference/operators/is.md @@ -43,7 +43,7 @@ The `is` operator can be useful in the following scenarios: ## C# language specification -For more information, see [The is operator](~/_csharpstandard/standard/expressions.md#121312-the-is-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md) and [Pattern matching](/dotnet/csharp/language-reference/language-specification/patterns). +For more information, see [The is operator](~/_csharpstandard/standard/expressions.md#121412-the-is-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md) and [Pattern matching](/dotnet/csharp/language-reference/language-specification/patterns). ## See also diff --git a/docs/csharp/language-reference/operators/lambda-expressions.md b/docs/csharp/language-reference/operators/lambda-expressions.md index 684f68211bd78..fce06abd62fd8 100644 --- a/docs/csharp/language-reference/operators/lambda-expressions.md +++ b/docs/csharp/language-reference/operators/lambda-expressions.md @@ -323,7 +323,7 @@ A static lambda can't capture local variables or instance state from enclosing s ## C# language specification -For more information, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1220-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1221-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). For more information about these features, see the following feature proposal notes: diff --git a/docs/csharp/language-reference/operators/lambda-operator.md b/docs/csharp/language-reference/operators/lambda-operator.md index 87b4e0ce07c31..4314f0e304619 100644 --- a/docs/csharp/language-reference/operators/lambda-operator.md +++ b/docs/csharp/language-reference/operators/lambda-operator.md @@ -72,7 +72,7 @@ The `=>` operator can't be overloaded. ## C# language specification -For more information about the lambda operator, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1220-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information about the lambda operator, see the [Anonymous function expressions](~/_csharpstandard/standard/expressions.md#1221-anonymous-function-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## See also diff --git a/docs/csharp/language-reference/operators/null-coalescing-operator.md b/docs/csharp/language-reference/operators/null-coalescing-operator.md index 709cee25fb479..e389b58ef7055 100644 --- a/docs/csharp/language-reference/operators/null-coalescing-operator.md +++ b/docs/csharp/language-reference/operators/null-coalescing-operator.md @@ -82,9 +82,9 @@ The operators `??` and `??=` can't be overloaded. ## C# language specification -For more information about the `??` operator, see [The null coalescing operator](~/_csharpstandard/standard/expressions.md#1216-the-null-coalescing-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). +For more information about the `??` operator, see [The null coalescing operator](~/_csharpstandard/standard/expressions.md#1217-the-null-coalescing-operator) section of the [C# language specification](~/_csharpstandard/standard/README.md). -For more information about the `??=` operator, see the [feature proposal note](~/_csharplang/proposals/csharp-8.0/null-coalescing-assignment.md). +For more information about the `??=` operator, see the [Compound assignment](~/_csharpstandard/standard/expressions.md#12234-compound-assignment) section of the C# language specification. ## See also diff --git a/docs/csharp/language-reference/operators/operator-overloading.md b/docs/csharp/language-reference/operators/operator-overloading.md index 7247452e65830..525f01d526c84 100644 --- a/docs/csharp/language-reference/operators/operator-overloading.md +++ b/docs/csharp/language-reference/operators/operator-overloading.md @@ -59,7 +59,7 @@ The following table shows the operators that can't be overloaded: | Operators | Alternatives | | :---------: | --------------- | -|[`x && y`](boolean-logical-operators.md#conditional-logical-and-operator-), [x || y](boolean-logical-operators.md#conditional-logical-or-operator-)| Overload both the [`true`](true-false-operators.md) and [`false`](true-false-operators.md) operators and the [`&`](boolean-logical-operators.md#logical-and-operator-) or [|](boolean-logical-operators.md#logical-or-operator-) operators. For more information, see [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12153-user-defined-conditional-logical-operators ).| +|[`x && y`](boolean-logical-operators.md#conditional-logical-and-operator-), [x || y](boolean-logical-operators.md#conditional-logical-or-operator-)| Overload both the [`true`](true-false-operators.md) and [`false`](true-false-operators.md) operators and the [`&`](boolean-logical-operators.md#logical-and-operator-) or [|](boolean-logical-operators.md#logical-or-operator-) operators. For more information, see [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12163-user-defined-conditional-logical-operators ).| |[a[i]](member-access-operators.md#indexer-operator-), [`a?[i]`](member-access-operators.md#null-conditional-operators--and-)|Define an [indexer](../../programming-guide/indexers/index.md).| |[`(T)x`](type-testing-and-cast.md#cast-expression)|Define custom type conversions performed by a cast expression. For more information, see [User-defined conversion operators](user-defined-conversion-operators.md).| |[`^x`](member-access-operators.md#index-from-end-operator-), [`x = y`](assignment-operator.md), [`x.y`](member-access-operators.md#member-access-expression-), [`x?.y`](member-access-operators.md#null-conditional-operators--and-), [`c ? t : f`](conditional-operator.md), [`x ?? y`](null-coalescing-operator.md), [`??= y`](null-coalescing-operator.md),
[`x..y`](member-access-operators.md#range-operator-), [`x->y`](pointer-related-operators.md#pointer-member-access-operator--), [`=>`](lambda-operator.md), [`f(x)`](member-access-operators.md#invocation-expression-), [`as`](type-testing-and-cast.md#the-as-operator), [`await`](await.md), [`checked`](../statements/checked-and-unchecked.md), [`unchecked`](../statements/checked-and-unchecked.md), [`default`](default.md), [`delegate`](delegate-operator.md), [`is`](type-testing-and-cast.md#the-is-operator), [`nameof`](nameof.md), [`new`](new-operator.md),
[`sizeof`](sizeof.md), [`stackalloc`](stackalloc.md), [`switch`](switch-expression.md), [`typeof`](type-testing-and-cast.md#the-typeof-operator), [`with`](with-expression.md)|None.| diff --git a/docs/csharp/language-reference/operators/patterns.md b/docs/csharp/language-reference/operators/patterns.md index 0a9016daa7cc6..2e4a7cdb20deb 100644 --- a/docs/csharp/language-reference/operators/patterns.md +++ b/docs/csharp/language-reference/operators/patterns.md @@ -75,7 +75,7 @@ To check for non-null, you can use a [negated](#logical-patterns) `null` [consta :::code language="csharp" source="snippets/patterns/DeclarationAndTypePatterns.cs" id="NonNullCheck"::: -For more information, see the [Declaration pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#declaration-pattern) and [Type pattern](~/_csharplang/proposals/csharp-9.0/patterns3.md#type-patterns) sections of the feature proposal notes. +For more information, see the [Declaration pattern](~/_csharpstandard/standard/patterns.md#1122-declaration-pattern) and [Type pattern](~/_csharplang/proposals/csharp-9.0/patterns3.md#type-patterns) sections of the feature proposal notes. ## Constant pattern @@ -105,7 +105,7 @@ You can use a [negated](#logical-patterns) `null` constant pattern to check for :::code language="csharp" source="snippets/patterns/ConstantPattern.cs" id="NonNullCheck"::: -For more information, see the [Constant pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#constant-pattern) section of the feature proposal note. +For more information, see the [Constant pattern](~/_csharpstandard/standard/patterns.md#1123-constant-pattern) section of the feature proposal note. ## Relational patterns @@ -196,7 +196,7 @@ You can reference nested properties or fields within a property pattern. This ca :::code language="csharp" source="snippets/patterns/PropertyPattern.cs" id="ExtendedPropertyPattern"::: -For more information, see the [Property pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#property-pattern) section of the feature proposal note and the [Extended property patterns](~/_csharplang/proposals/csharp-10.0/extended-property-patterns.md) feature proposal note. +For more information, see the [Property pattern](~/_csharpstandard/standard/patterns.md#1126-property-pattern) section of the feature proposal note and the [Extended property patterns](~/_csharplang/proposals/csharp-10.0/extended-property-patterns.md) feature proposal note. > [!TIP] > You can use the [Simplify property pattern (IDE0170)](../../../fundamentals/code-analysis/style-rules/ide0170.md) style rule to improve code readability by suggesting places to use extended property patterns. @@ -240,7 +240,7 @@ You can also extend a positional pattern in any of the following ways: A positional pattern is a recursive pattern. That is, you can use any pattern as a nested pattern. -For more information, see the [Positional pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#positional-pattern) section of the feature proposal note. +For more information, see the [Positional pattern](~/_csharpstandard/standard/patterns.md#1125-positional-pattern) section of the feature proposal note. ## `var` pattern @@ -256,7 +256,7 @@ In the preceding example, pattern `var (x, y)` is equivalent to a [positional pa In a `var` pattern, the type of a declared variable is the compile-time type of the expression that is matched against the pattern. -For more information, see the [Var pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#var-pattern) section of the feature proposal note. +For more information, see the [Var pattern](~/_csharpstandard/standard/patterns.md#1124-var-pattern) section of the feature proposal note. ## Discard pattern @@ -268,7 +268,7 @@ In the preceding example, a discard pattern is used to handle `null` and any int A discard pattern can't be a pattern in an `is` expression or a `switch` statement. In those cases, to match any expression, use a [`var` pattern](#var-pattern) with a discard: `var _`. A discard pattern can be a pattern in a `switch` expression. -For more information, see the [Discard pattern](~/_csharplang/proposals/csharp-8.0/patterns.md#discard-pattern) section of the feature proposal note. +For more information, see the [Discard pattern](~/_csharpstandard/standard/patterns.md#1127-discard-pattern) section of the feature proposal note. ## Parenthesized pattern @@ -304,7 +304,6 @@ For more information, see the [Patterns and pattern matching](~/_csharpstandard/ For information about features added in C# 8 and later, see the following feature proposal notes: -- [Recursive pattern matching](~/_csharplang/proposals/csharp-8.0/patterns.md) - [Pattern-matching updates](~/_csharplang/proposals/csharp-9.0/patterns3.md) - [Extended property patterns](~/_csharplang/proposals/csharp-10.0/extended-property-patterns.md) - [C# 11 - List patterns](~/_csharplang/proposals/csharp-11.0/list-patterns.md) diff --git a/docs/csharp/language-reference/operators/subtraction-operator.md b/docs/csharp/language-reference/operators/subtraction-operator.md index c65aa465f978d..e9c7e9bc0d494 100644 --- a/docs/csharp/language-reference/operators/subtraction-operator.md +++ b/docs/csharp/language-reference/operators/subtraction-operator.md @@ -31,7 +31,7 @@ For operands of the same [delegate](../builtin-types/reference-types.md#the-dele :::code interactive="try-dotnet-method" language="csharp" source="snippets/shared/SubtractionOperator.cs" id="DelegateRemovalNoChange"::: - The preceding example also demonstrates that during delegate removal delegate instances are compared. For example, delegates that are produced from evaluation of identical [lambda expressions](lambda-expressions.md) aren't equal. For more information about delegate equality, see the [Delegate equality operators](~/_csharpstandard/standard/expressions.md#12139-delegate-equality-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). + The preceding example also demonstrates that during delegate removal delegate instances are compared. For example, delegates that are produced from evaluation of identical [lambda expressions](lambda-expressions.md) aren't equal. For more information about delegate equality, see the [Delegate equality operators](~/_csharpstandard/standard/expressions.md#12149-delegate-equality-operators) section of the [C# language specification](~/_csharpstandard/standard/README.md). - If the left-hand operand is `null`, the result of the operation is `null`. If the right-hand operand is `null`, the result of the operation is the left-hand operand. @@ -69,7 +69,7 @@ A user-defined type can [overload](operator-overloading.md) the `-` operator. Wh ## C# language specification -For more information, see the [Unary minus operator](~/_csharpstandard/standard/expressions.md#1293-unary-minus-operator) and [Subtraction operator](~/_csharpstandard/standard/expressions.md#12116-subtraction-operator) sections of the [C# language specification](~/_csharpstandard/standard/README.md). For more information on overloading the compound assignment operators in C# 14 and later, see the [user defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. +For more information, see the [Unary minus operator](~/_csharpstandard/standard/expressions.md#1293-unary-minus-operator) and [Subtraction operator](~/_csharpstandard/standard/expressions.md#12126-subtraction-operator) sections of the [C# language specification](~/_csharpstandard/standard/README.md). For more information on overloading the compound assignment operators in C# 14 and later, see the [user defined compound assignment](~/_csharplang/proposals/csharp-14.0/user-defined-compound-assignment.md) feature specification. ## See also diff --git a/docs/csharp/language-reference/operators/switch-expression.md b/docs/csharp/language-reference/operators/switch-expression.md index d445f5709187b..a37031fe2052c 100644 --- a/docs/csharp/language-reference/operators/switch-expression.md +++ b/docs/csharp/language-reference/operators/switch-expression.md @@ -50,7 +50,7 @@ If none of a `switch` expression's patterns matches an input value, the runtime ## C# language specification -For more information, see the [`switch` expression](~/_csharplang/proposals/csharp-8.0/patterns.md#switch-expression) section of the [feature proposal note](~/_csharplang/proposals/csharp-8.0/patterns.md). +For more information, see the [`switch` expression](~/_csharpstandard/standard/expressions.md#1211-switch-expression) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## See also diff --git a/docs/csharp/language-reference/operators/true-false-operators.md b/docs/csharp/language-reference/operators/true-false-operators.md index ccdf47829b525..446a6133ba425 100644 --- a/docs/csharp/language-reference/operators/true-false-operators.md +++ b/docs/csharp/language-reference/operators/true-false-operators.md @@ -21,11 +21,11 @@ The `true` and `false` operators aren't guaranteed to complement each other. Tha ## Boolean expressions -A type with the defined `true` operator can be the type of a result of a controlling conditional expression in the [if](../statements/selection-statements.md#the-if-statement), [do](../statements/iteration-statements.md#the-do-statement), [while](../statements/iteration-statements.md#the-while-statement), and [for](../statements/iteration-statements.md#the-for-statement) statements and in the [conditional operator `?:`](conditional-operator.md). For more information, see the [Boolean expressions](~/_csharpstandard/standard/expressions.md#1225-boolean-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). +A type with the defined `true` operator can be the type of a result of a controlling conditional expression in the [if](../statements/selection-statements.md#the-if-statement), [do](../statements/iteration-statements.md#the-do-statement), [while](../statements/iteration-statements.md#the-while-statement), and [for](../statements/iteration-statements.md#the-for-statement) statements and in the [conditional operator `?:`](conditional-operator.md). For more information, see the [Boolean expressions](~/_csharpstandard/standard/expressions.md#1226-boolean-expressions) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## User-defined conditional logical operators -If a type with the defined `true` and `false` operators [overloads](operator-overloading.md) the [logical OR operator](boolean-logical-operators.md#logical-or-operator-) `|` or the [logical AND operator](boolean-logical-operators.md#logical-and-operator-) `&` in a certain way, the [conditional logical OR operator](boolean-logical-operators.md#conditional-logical-or-operator-) `||` or [conditional logical AND operator](boolean-logical-operators.md#conditional-logical-and-operator-) `&&`, respectively, can be evaluated for the operands of that type. For more information, see the [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12153-user-defined-conditional-logical-operators ) section of the [C# language specification](~/_csharpstandard/standard/README.md). +If a type with the defined `true` and `false` operators [overloads](operator-overloading.md) the [logical OR operator](boolean-logical-operators.md#logical-or-operator-) `|` or the [logical AND operator](boolean-logical-operators.md#logical-and-operator-) `&` in a certain way, the [conditional logical OR operator](boolean-logical-operators.md#conditional-logical-or-operator-) `||` or [conditional logical AND operator](boolean-logical-operators.md#conditional-logical-and-operator-) `&&`, respectively, can be evaluated for the operands of that type. For more information, see the [User-defined conditional logical operators](~/_csharpstandard/standard/expressions.md#12163-user-defined-conditional-logical-operators ) section of the [C# language specification](~/_csharpstandard/standard/README.md). ## Example diff --git a/docs/csharp/language-reference/operators/type-testing-and-cast.md b/docs/csharp/language-reference/operators/type-testing-and-cast.md index abdd3bb962328..c89996178974f 100644 --- a/docs/csharp/language-reference/operators/type-testing-and-cast.md +++ b/docs/csharp/language-reference/operators/type-testing-and-cast.md @@ -145,8 +145,8 @@ A user-defined type can't overload the `()` operator, but can define custom type For more information, see the following sections of the [C# language specification](~/_csharpstandard/standard/README.md): -- [The `is` operator](~/_csharpstandard/standard/expressions.md#121312-the-is-operator) -- [The `as` operator](~/_csharpstandard/standard/expressions.md#121313-the-as-operator) +- [The `is` operator](~/_csharpstandard/standard/expressions.md#121412-the-is-operator) +- [The `as` operator](~/_csharpstandard/standard/expressions.md#121413-the-as-operator) - [Cast expressions](~/_csharpstandard/standard/expressions.md#1298-cast-expressions) - [The `typeof` operator](~/_csharpstandard/standard/expressions.md#12818-the-typeof-operator) diff --git a/docs/csharp/language-reference/statements/iteration-statements.md b/docs/csharp/language-reference/statements/iteration-statements.md index bb4f2f4dce8ad..ebb4f882894b0 100644 --- a/docs/csharp/language-reference/statements/iteration-statements.md +++ b/docs/csharp/language-reference/statements/iteration-statements.md @@ -154,10 +154,6 @@ For more information, see the following sections of the [C# language specificati - [The `foreach` statement](~/_csharpstandard/standard/statements.md#1395-the-foreach-statement) - [The `do` statement](~/_csharpstandard/standard/statements.md#1393-the-do-statement) - [The `while` statement](~/_csharpstandard/standard/statements.md#1392-the-while-statement) - -For more information about these features, see the following feature proposal notes: - -- [Async streams](~/_csharplang/proposals/csharp-8.0/async-streams.md) - [Extension `GetEnumerator` support for `foreach` loops](~/_csharplang/proposals/csharp-9.0/extension-getenumerator.md) ## See also diff --git a/docs/csharp/linq/index.md b/docs/csharp/linq/index.md index d3ba24ae757db..87d3628bb1038 100644 --- a/docs/csharp/linq/index.md +++ b/docs/csharp/linq/index.md @@ -22,7 +22,7 @@ You might need to add a [`using`](../language-reference/keywords/using-directive - Query expressions use many familiar C# language constructs, which make them easy to read. - The variables in a query expression are all strongly typed. - A query isn't executed until you iterate over the query variable, for example in a `foreach` statement. -- At compile time, query expressions are converted to standard query operator method calls according to the rules defined in the C# specification. Any query that can be expressed by using query syntax can also be expressed by using method syntax. In some cases, query syntax is more readable and concise. In others, method syntax is more readable. There's no semantic or performance difference between the two different forms. For more information, see [C# language specification](~/_csharpstandard/standard/expressions.md#1221-query-expressions) and [Standard query operators overview](standard-query-operators/index.md). +- At compile time, query expressions are converted to standard query operator method calls according to the rules defined in the C# specification. Any query that can be expressed by using query syntax can also be expressed by using method syntax. In some cases, query syntax is more readable and concise. In others, method syntax is more readable. There's no semantic or performance difference between the two different forms. For more information, see [C# language specification](~/_csharpstandard/standard/expressions.md#1222-query-expressions) and [Standard query operators overview](standard-query-operators/index.md). - Some query operations, such as or , have no equivalent query expression clause and must therefore be expressed as a method call. Method syntax can be combined with query syntax in various ways. - Query expressions can be compiled to expression trees or to delegates, depending on the type that the query is applied to. queries are compiled to delegates. and queries are compiled to expression trees. For more information, see [Expression trees](/dotnet/csharp/advanced-topics/expression-trees). diff --git a/docs/csharp/specification/toc.yml b/docs/csharp/specification/toc.yml index eb1d8863c2671..c67c3808ee63c 100644 --- a/docs/csharp/specification/toc.yml +++ b/docs/csharp/specification/toc.yml @@ -125,8 +125,6 @@ items: href: ../../../_csharplang/proposals/csharp-14.0/first-class-span-types.md - name: Patterns items: - - name: Recursive pattern matching - href: ../../../_csharplang/proposals/csharp-8.0/patterns.md - name: Pattern matching enhancements href: ../../../_csharplang/proposals/csharp-9.0/patterns3.md - name: Extended property patterns diff --git a/docs/fundamentals/code-analysis/style-rules/ide0110.md b/docs/fundamentals/code-analysis/style-rules/ide0110.md index 851f64a6d20c1..c64138dc42b99 100644 --- a/docs/fundamentals/code-analysis/style-rules/ide0110.md +++ b/docs/fundamentals/code-analysis/style-rules/ide0110.md @@ -23,7 +23,7 @@ dev_langs: ## Overview -This rule flags unnecessary [discard patterns](~/_csharplang/proposals/csharp-8.0/patterns.md#discard-pattern). A discard pattern is unnecessary when used in a context where it has no effect. +This rule flags unnecessary [discard patterns](~/_csharpstandard/standard/patterns.md#1127-discard-pattern). A discard pattern is unnecessary when used in a context where it has no effect. ## Options