unsafe and fixed block

image_pdfimage_print
   
  

public class MyValue
{
    public int id;
    public MyValue(int id) { this.id = id; }
}
   
class UnsafeClassApp
{
    unsafe public static void Swap(int* pi, int* pj)
    {
        int tmp = *pi;
        *pi = *pj;
        *pj = tmp;
    }
   
    static void Main(string[] args)
    {
        MyValue i = new MyValue(123);
        MyValue j = new MyValue(456);
        Console.WriteLine("Before Swap:	i = {0}, j = {1}", i.id, j.id);
   
        unsafe
        {
             (int* pi = &i.id, pj = &j.id)
            {
                Swap(pi, pj);
            }
        }
   
        Console.WriteLine(
            "After Swap:	i = {0}, j = {1}", i.id, j.id);
    }
}