Csharp/CSharp Tutorial/struct/struct unsafe code

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Access members via ->

When you access a member of a structure through a pointer, you must use the arrow operator, which is ->, rather than the dot (.) operator.


using System;
using System.Globalization;
struct Point
{
  public int x;
  public int y;
  public override string ToString() 
  {
    return "(" + x + "," + y + ")";
  }
}

public class MainClass{
  static void Main(string[] args)
  {
    Console.WriteLine("Access members via ->");
    unsafe
    {
      Point point;
      Point* p = &point;
      p->x = 100;
      p->y = 200;
      Console.WriteLine(p->ToString());
    }
  }
}
Access members via ->
(100,200)

struct with unsafe code(pointer)

using System;
using System.Globalization;
public struct Node
{
  public int Value;
  public unsafe Node* Left;
  public unsafe Node* Right;
}
public class MainClass{
  static void Main(string[] args)
  {
    Node n = new Node();
    n.Value = 9;
  }
}

Use pointer indirection and . operator

using System;
using System.Globalization;
struct Point
{
  public int x;
  public int y;
  public override string ToString() 
  {
    return "(" + x + "," + y + ")";
  }
}

public class MainClass{
  static void Main(string[] args)
  {
    Console.WriteLine("Access members via.");
    unsafe
    {
      Point point;
      Point* p = &point;
      (*p).x = 100;
      (*p).y = 200;
      Console.WriteLine((*p).ToString());
    }
  }
}
Access members via.
(100,200)