diff --git a/docs/csharp/language-reference/operators/member-access-operators.md b/docs/csharp/language-reference/operators/member-access-operators.md index 94ad8b24729cc..b84a5cc96c2fa 100644 --- a/docs/csharp/language-reference/operators/member-access-operators.md +++ b/docs/csharp/language-reference/operators/member-access-operators.md @@ -1,7 +1,7 @@ --- title: "Member access operators and expressions - C# reference" description: "Learn about C# operators that you can use to access type members." -ms.date: 04/17/2020 +ms.date: 11/13/2020 author: pkulikov f1_keywords: - "._CSharpKeyword" @@ -132,9 +132,6 @@ In the preceding example, if you don't use the `??` operator, `numbers?.Length < The null-conditional member access operator `?.` is also known as the Elvis operator. -> [!NOTE] -> In C# 8, the [null-forgiving operator](null-forgiving.md) terminates the list of preceding null-conditional operations. For example, the expression `x?.y!.z` is parsed as `(x?.y)!.z`. Due to this interpretation, `z` is evaluated even if `x` is `null`, which may result in a . - ### Thread-safe delegate invocation Use the `?.` operator to check if a delegate is non-null and invoke it in a thread-safe way (for example, when you [raise an event](../../../standard/events/how-to-raise-and-consume-events.md)), as the following code shows: diff --git a/docs/csharp/language-reference/operators/null-forgiving.md b/docs/csharp/language-reference/operators/null-forgiving.md index 81df9b2099edf..76cacb95310d0 100644 --- a/docs/csharp/language-reference/operators/null-forgiving.md +++ b/docs/csharp/language-reference/operators/null-forgiving.md @@ -1,8 +1,8 @@ --- description: "! (null-forgiving) operator - C# reference" title: "! (null-forgiving) operator - C# reference" -ms.date: 10/11/2019 -f1_keywords: +ms.date: 11/13/2020 +f1_keywords: - "nullForgiving_CSharpKeyword" helpviewer_keywords: - "null-forgiving operator [C#]" @@ -14,9 +14,6 @@ Available in C# 8.0 and later, the unary postfix `!` operator is the null-forgiv The null-forgiving operator has no effect at run time. It only affects the compiler's static flow analysis by changing the null state of the expression. At run time, expression `x!` evaluates to the result of the underlying expression `x`. -> [!NOTE] -> In C# 8, the null-forgiving operator terminates the list of preceding [null-conditional](member-access-operators.md#null-conditional-operators--and-) operations. For example, the expression `x?.y!.z` is parsed as `(x?.y)!.z`. Due to this interpretation, `z` is evaluated even if `x` is `null`, which may result in a . - For more information about the nullable reference types feature, see [Nullable reference types](../builtin-types/nullable-reference-types.md). ## Examples