Csharp/CSharp Tutorial/struct/struct unsafe code
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)