From 995a0532f7d8c85c2bc336a7f0f1c85085f16202 Mon Sep 17 00:00:00 2001 From: pkulikov Date: Sat, 24 Nov 2018 20:55:54 +0100 Subject: [PATCH] Revised a pointer member access operator article --- .../CSharp/dereference-operator_1.cs | 22 ------- .../operators/dereference-operator.md | 62 ++++++++++--------- .../how-to-access-a-member-with-a-pointer.md | 4 +- 3 files changed, 36 insertions(+), 52 deletions(-) delete mode 100644 docs/csharp/language-reference/operators/codesnippet/CSharp/dereference-operator_1.cs diff --git a/docs/csharp/language-reference/operators/codesnippet/CSharp/dereference-operator_1.cs b/docs/csharp/language-reference/operators/codesnippet/CSharp/dereference-operator_1.cs deleted file mode 100644 index 62844dcbfabb7..0000000000000 --- a/docs/csharp/language-reference/operators/codesnippet/CSharp/dereference-operator_1.cs +++ /dev/null @@ -1,22 +0,0 @@ - // compile with: -unsafe - - struct Point - { - public int x, y; - } - - class MainClass12 - { - unsafe static void Main() - { - Point pt = new Point(); - Point* pp = &pt; - pp->x = 123; - pp->y = 456; - Console.WriteLine("{0} {1}", pt.x, pt.y); - } - } - /* - Output: - 123 456 - */ diff --git a/docs/csharp/language-reference/operators/dereference-operator.md b/docs/csharp/language-reference/operators/dereference-operator.md index 81fcf156147cf..75f42cf98fe71 100644 --- a/docs/csharp/language-reference/operators/dereference-operator.md +++ b/docs/csharp/language-reference/operators/dereference-operator.md @@ -1,6 +1,6 @@ --- title: "-> Operator (C# Reference)" -ms.date: 07/20/2015 +ms.date: 11/26/2018 f1_keywords: - "->_CSharpKeyword" helpviewer_keywords: @@ -9,30 +9,36 @@ helpviewer_keywords: ms.assetid: e39ccdc1-f1ff-4a92-bf1d-ac2c8c11316a --- # -> Operator (C# Reference) -The `->` operator combines pointer dereferencing and member access. - -## Remarks - An expression of the form, - -```csharp -x->y -``` - - (where `x` is a pointer of type `T*` and `y` is a member of `T`) is equivalent to, - -```csharp -(*x).y -``` - - The `->` operator can be used only in code that is marked as [unsafe](../../../csharp/language-reference/keywords/unsafe.md). - - The `->` operator cannot be overloaded. - -## Example - [!code-csharp[csRefOperators#15](../../../csharp/language-reference/operators/codesnippet/CSharp/dereference-operator_1.cs)] - -## See Also - -- [C# Reference](../../../csharp/language-reference/index.md) -- [C# Programming Guide](../../../csharp/programming-guide/index.md) -- [C# Operators](../../../csharp/language-reference/operators/index.md) + +The pointer member access operator `->` combines pointer indirection and member access. + +If `x` is a pointer of the type `T*` and `y` is an accessible member of `T`, an expression of the form + +```csharp +x->y +``` + +is equivalent to + +```csharp +(*x).y +``` + +The `->` operator requires [unsafe](../keywords/unsafe.md) context. + +For more information, see [How to: access a member with a pointer](../../programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md). + +## Operator overloadability + +The `->` operator cannot be overloaded. + +## C# language specification + +For more information, see the [Pointer member access](~/_csharplang/spec/unsafe-code.md#pointer-member-access) section of the [C# language specification](../language-specification/index.md). + +## See also + +- [C# Reference](../index.md) +- [C# Programming Guide](../../programming-guide/index.md) +- [C# Operators](index.md) +- [Pointer types](../../programming-guide/unsafe-code-pointers/pointer-types.md) diff --git a/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md b/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md index 76146e490a92b..3b4a1a61a7109 100644 --- a/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md +++ b/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md @@ -1,11 +1,11 @@ --- -title: "How to: Access a Member with a Pointer (C# Programming Guide)" +title: "How to: access a member with a pointer (C# Programming Guide)" ms.date: 07/20/2015 helpviewer_keywords: - "pointers [C#], member access" ms.assetid: 1e998498-8c85-4a78-8ce2-4d8c20f08342 --- -# How to: Access a Member with a Pointer (C# Programming Guide) +# How to: access a member with a pointer (C# Programming Guide) To access a member of a struct that is declared in an unsafe context, you can use the member access operator as shown in the following example in which `p` is a pointer to a [struct](../../../csharp/language-reference/keywords/struct.md) that contains a member `x`. ```